如何将Entity Framework 4.0(EF4)中的实体层剥离出来?运用于多层结构

问题描述

问题是这样的我使用了EntityFramework4.0来直接生成数据库操作同时我将项目进行了3层的划分分为表示层-Web业务逻辑层-BLL数据访问层-DAL模型层-Model但是有个问题,模型层是EntityFramework4.0直接生成的,也就是直接耦合在了DAL层如果Web需要访问模型层,就只有引用DAL,显然这个就不合理了但如如果将模型层从DAL层拆出来,也不妥,因为模型层是EF4直接生成的,如果拆出来,后期数据库有了变化,没法使用自动生成工具更新开始考虑使用partial类的方式,拆到Model层,但是partial类的方式是在编译的时候将多个partial类进行合并编译,而DAL层是前于Model层编译的,所以貌似也不行考虑了使用继承的方式,但是这样做,又发现BLL和Web层,耦合的是子类型,而DAL使用的父类型,感觉在设计和传递上非常别扭,底层传上来的的父类型,BLL接收子类型,又考虑可以在父类型上添加一个扩展方法,这个方法完成父类型到子类型的转换,虽然可以实现,但是觉得太奇怪了,高层代码耦合了比较小的逻辑类型,不妥这个该怎么完美的实现呢,即让Web不耦合DAL层,又可以使用自动代码更新生成工具?谢谢各位大大,指点我一下啊谢谢

解决方案

解决方案二:
该回复于2011-11-24 13:15:07被版主删除
解决方案三:
参见EF4.1,比较适合解决你的问题,允许用户使用自己定义的实体,并允许用户手动关联映射关系
解决方案四:
我尝试安装了EF4.1但是不知道怎么关联到自动生成工具上,其实我还是想让EF自动生成实体类,我只想将自动生成的这个部分实体类,拆到一个单独的项目中有简单的介绍使用吗,或者大体思路也可以,但是不要自己手动写那些映射关系和计划

时间: 2024-09-13 06:03:26

如何将Entity Framework 4.0(EF4)中的实体层剥离出来?运用于多层结构的相关文章

如何将Entity Framework 6.0(EF4)中的实体层剥离出来?运用于多层结构

问题描述 问题是这样的我使用了EntityFramework4.0来直接生成数据库操作同时我将项目进行了3层的划分分为表示层-Web业务逻辑层-BLL数据访问层-DAL模型层-Model但是有个问题,模型层是EntityFramework4.0直接生成的,也就是直接耦合在了DAL层如果Web需要访问模型层,就只有引用DAL,显然这个就不合理了但如如果将模型层从DAL层拆出来,也不妥,因为模型层是EF4直接生成的,如果拆出来,后期数据库有了变化,没法使用自动生成工具更新开始考虑使用partial类

Entity Framework 5.0系列之EF概览

概述 在开发面向数据的软件时我们常常为了解决业务问题实体.关系和逻辑构建模型而费尽心机,ORM的产生为我们提供了一种优雅的解决方案.ADO.NET Entity Framework是.NET开发中一种由ADO.NET驱动的ORM框架,使用Entity Framework开发人员可以不必考虑数据的基础数据表和列,在处理数据时能够以更高的抽象级别进行工作,并能够以相对传统开发编写更少的代码来创建和维护应用程序. 我们知道面向对象的编程与数据存储系统的交换提出了一个难题:类结构通常同关系数据表组织结构

Entity Framework 5.0系列之Code First数据库迁移

我们知道无论是"Database First"还是"Model First"当模型发生改变了都可以通过Visual Studio设计视图进行更新,那么对于Code First如何更新已有的模型呢?今天我们简单介绍一下Entity Framework的数据迁移功能. Entity Framework配置 在开始今天的话题之前先来看一下Entity Framework的配置,因为有很多朋友因为配置文件的问题造成"Migrations"命令执行失败.

Entity Framework问题:ReferentialConstraint 中的依赖属性映射由存储生成的列

原文:Entity Framework问题:ReferentialConstraint 中的依赖属性映射由存储生成的列 今天在采用Entity Framework 的Database First反向以及用Code First写的数据库表时,在测试时一直出现以下错误: 情况是这样的: 我有两张表,记主表为A,辅表为B(即外键所在的表,设外键为Id,同时也是表B的主键) 这个问题是因为: 我的表B中的键Id不仅是外键,也具有自增属性,即在建表是用Identity标识之.而这两个功能是矛盾的.一方面,

Entity Framework 4.0并发处理的步骤

新用到了实体框架,用到了并发,参考以下的图书资料 Entity Framework 4.0 Recipes A Problem-Solution Approach ISBN-13 (pbk): 978-1-4302-2703-8 ISBN-13 (electronic): 978-1-4302-2704-5 http://apress.com/book/view/1430227036 具体的步骤如下: 建立模型 添加Ado.net Entity Model后类似如下添加TimeStamp并发控制

Entity Framework 5.0基础系列

原文:Entity Framework 5.0基础系列 1.Entity Framework简介 http://www.cnblogs.com/aehyok/p/3315991.html 2.Entity Framework DBFirst尝试http://www.cnblogs.com/aehyok/p/3318892.html 3.Entity Framework ModelFirst尝试http://www.cnblogs.com/aehyok/p/3323438.html 4.Entit

Entity Framework 5.0系列之自动生成Code First代码

在前面的文章中我们提到Entity Framework的"Code First"模式也同样可以基于现有数据库进行开发.今天就让我们一起看一下使用Entity Framework Power Tools如何基于现有数据库生成数据类和数据库上下等. Entity Framework Power Tools 基于现有数据库生成POCO数据类和数据库上下文需要借助Visual Studio一个扩展插件-- Entity Framework Power Tools(一个Code First反向工

Entity Framework 5.0系列之数据操作

Entity Framework将概念模型中定义的实体和关系映射到数据源,利用实体框架可以将数据源返回的数据具体化为对象:跟踪对象所做的更改:并发处理:将对象更改传播到数据源等.今天我们就一起讨论如何利用Entity Framework进行查询.插入.更新和删除数据. 查询 我们将使用AdventureWorks数据库来进行今天的所有演示,因此开始之前请准备好相应的数据库.在EF中进行查询应该说是相当简单,只需要定义一个类继承于"DbContext",然后定义对应的"DbSe

Entity Framework 4.0新增对T-SQL的支持

EF4.0中新增了ExecuteStoreQuery,ExecuteStoreCommand,ExecuteFunction等方法,完美支持T- SQL 之前在EF中用Linq进行left join查询和报表数据查询简直是一场噩梦,以下代码就是例子: Linq左连接查询N张表示例代码 1 public List<Info> getMapUnitList(int MapId) 2 { 3 var var1 = from mu in epm.MapUnit 4 join us in epm.Uni