最近准备用EF做底层架构开发项目,看完了几位朋友的EF系列博文,有几个疑问盼园子各大侠帮忙。
问题1,
我的环境是VS2010SP1Rel,可以使用EF5.0吗?还是只有VS2012才能使用EF5.0?
\EFTest\packages\EntityFramework.5.0.0\lib\net40\EntityFramework.dll
和
\EFTest\packages\EntityFramework.5.0.0\lib\net45\EntityFramework.dll
2个DLL分别是ef4.4和ef5.0,我都可以引用,编译正常。
我不想升级VS2010,又想用最新的EF5.0,可以吗?
问题2,
我的开发顺序是:先设计数据库 - 把数据模型导入到.edmx(只有视图无代码) - 生成POCO。
大家用哪个工具来生成POCO类?EF一路走来,有很多种方式,不断在进步,而且,各个博主的方式都有可能不一样,我想请教一下,在实际开发过程中,哪种更方便?
ef4.x DbContext Generator 或者 ef4.xPOCO Entity Generator,或者其他?
其实要求很简单,不想要DB Frist那些多余的代码,不需要Code Frist那些自动生成维护数据库的功能,只求一个好的、快速的实体类。
问题3,
应该如何对基于Entity Framework的项目分层呢?
http://www.cnblogs.com/fangrobert/archive/2011/08/22/2150048.html
这个哥们介绍的好像不错。
4层:
Data/Model/Entitis/:POCO
DAL:继承 ObjectContext
BLL/Services:业务层
App:Web
问题4:
如果用于分布式的Winform,和Silver light,或者是EF+MVC,又应该如何分层呢?
这个问题是后话,先把EF用于Web再研究这个,不过现在分好层以备后用。
同时,分布式Winform和SL,好像都需要用到wcf/web service功能,使客户端能调用服务端的方法,然后反射执行吧?这个地方我很困惑,刚实际项目中需要用到winFrom和SL。
希望各位帮忙指点指点,或者提供个参考地址,非常感谢。
只有200豆豆,全部送上了。
为了防止UI层直接访问调用dbcontent的方法进行数据增删改查,有必要,把dbcontent看作为DAL层,再弄个BLL层,然后在BLL层里调用dbcontent的方法吗?然后UI层只允许调用BLL的方法?有没有这个必要?如果这样做的话,岂不是BLL里需要写很多没多大意义的方法?。
1.VS2010可以使用EF5.0,我在项目上已经使用。目前发现EF5.0和EF4.0的主要区别在于是否支持odata3.0协议。
2.EF生成代码,应该和ORM自动生成代码一致,导入数据库,然后生成*.edm(XML文件)和Design类
3.没有DAL,EF不支持实体扩展,但可以使用匿名对象弥补这个不足。
4.客户端调用服务端的方法,只要你的方法定义正确,调用地址正确,就可以执行相应服务端的方法
建议使用Linkpad,可以加速调试
可以将EF5.0提供出来下载安装?
1. 应该行,没用过EF5.0
2.一般会用DB Frist,选择Entity Data Model进行创建。 或者直接 Code First就更加不会有多余的代码了。
3.分层的话,EF直接为DAL层,如果选择DB Frist的话,DAL层将直接包含实体,可以通过 部分类来扩展实体,将Model抽象出来放到公共层或者基础架构层,如果是CodeFirst的话,可以单独放到Model层,更好控制。
我们的3层是逻辑上的3层,不是说一个项目就是一层,Model不作为一层,可以放到基础架构层。
4.可以建领域的4层或者经典的3层,EF归DAL,Mvc划分为UI层。
何必分层?
文字写了很多,看着头大
问题1我可以给你明确肯定的答复,亲身验证可行,见我的博客文章http://www.cnblogs.com/seawaving/archive/2012/11/28/2793221.html有详细的步骤和说明
http://www.cnblogs.com/fangrobert/archive/2011/08/22/2150048.html