标签:style blog http io os ar 使用 for sp
nuget上185W多的下载量,说明.Net开发人员还是比较喜欢用EF的。但是EF在提供了便利性的同时也有许多缺点,以下就是我认为不应该应用EF的场景:
一些大中型企业应用往往具有以上几种情况,此时就不适合使用EF了。
至于使用什么ORM,我个人认为NHibernate配置起来太麻烦,如果没什么太特殊的要求,可以试一下ServiceStack.OrmLite能不能满足需求。或者直接上ADO.Net
如果非要使用EF,建议使用EF最新的稳定发布版本(支持DbContext+Code first方式开发)。
然后读一下《Programming Entity Framework Code First》和《Programming Entity Framework DbContext》这两本书(目前无中文版)。
使用DbContext+Code first POCO+Repository模式,这样既可以保证EF被Repository隔离,又可以保证可测试性,还能在需要更换ORM框架甚至是换成ADO.Net时少改一点代码。
提供示例代码下载(.Net 4+EF5)
示例代码中有POCO和EF的Configurations,把EF相关的Configurations单独拿出来保证了DB Model的纯洁性。在这里大体摘一点东西给大家看看
首先是数据库结构,我使用的是Code first,在第一次有实际的数据库操作的时候会自动生成数据库,生成后的数据库结构如下图:
数据库的生成策略在EFContext类的静态构造里面:
static EFContext(){ // 指定数据库生成策略为不存在时生成 // 还可以指定为: // DropCreateDatabaseAlways(总是删除原有数据库重建) // DropCreateDatabaseIfModelChanges(数据库模型改变后删除原有数据库重建) Database.SetInitializer<EFContext>(new CreateDatabaseIfNotExists<EFContext>());}
Album表的Configuration设置:
public class AlbumConfiguration : EntityTypeConfiguration<Album>
{
}
重写EFContext类中的OnModelCreating函数,使用我们自定义的Configurations:
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
}
Repository模式这里我就不多说了,具体看AbstractDbAccessor项目中的内容,
EF的Repository实现在ConcreteDbAccessor项目EntityFramework目录下的EFDbAccessor和Repository目录
标签:style blog http io os ar 使用 for sp
原文地址:http://www.cnblogs.com/LiuJiYe/p/4032926.html