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

roki_chen 2011-11-24 09:54:33
问题是这样的

我使用了Entity Framework 4.0来直接生成数据库操作

同时我将项目进行了3层的划分
分为
表示层-Web
业务逻辑层-BLL
数据访问层-DAL
模型层-Model

但是有个问题,模型层是Entity Framework 4.0直接生成的,也就是直接耦合在了DAL层
如果Web需要访问模型层,就只有引用DAL,显然这个就不合理了

但如如果将模型层从DAL层拆出来,也不妥,因为模型层是EF4直接生成的,如果拆出来,后期数据库有了变化,没法使用自动生成工具更新

开始考虑使用partial类的方式,拆到Model层,但是partial类的方式是在编译的时候将多个partial类进行合并编译,而DAL层是前于Model层编译的,所以貌似也不行

考虑了使用继承的方式,但是这样做,又发现BLL和Web层,耦合的是子类型,而DAL使用的父类型,感觉在设计和传递上非常别扭,底层传上来的的父类型,BLL接收子类型,又考虑可以在父类型上添加一个扩展方法,这个方法完成父类型到子类型的转换,虽然可以实现,但是觉得太奇怪了,高层代码耦合了比较小的逻辑类型,不妥

这个该怎么完美的实现呢,即让Web不耦合DAL层,又可以使用自动代码更新生成工具?

谢谢各位大大,指点我一下啊
谢谢

...全文
126 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
roki_chen 2011-11-25
  • 打赏
  • 举报
回复
我尝试安装了EF4.1但是不知道怎么关联到自动生成工具上,

其实我还是想让EF自动生成实体类,我只想将自动生成的这个部分实体类,拆到一个单独的项目中

有简单的介绍使用吗,或者大体思路也可以,但是不要自己手动写那些映射关系和计划
hxwangcong 2011-11-24
  • 打赏
  • 举报
回复
参见EF4.1,比较适合解决你的问题,允许用户使用自己定义的实体,并允许用户手动关联映射关系

110,548

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧