使用 LINQ to SQL 很可能不会像实体框架那样获得积极的开发,您认为最好切换到实体框架吗?
与感觉非常自然的 LINQ to SQL 相比,我个人发现 EF 非常笨重且难以使用。
编辑:我最近在我的博客上发表了一篇关于我对这个潜在决定的感受的文章......
使用 LINQ to SQL 很可能不会像实体框架那样获得积极的开发,您认为最好切换到实体框架吗?
与感觉非常自然的 LINQ to SQL 相比,我个人发现 EF 非常笨重且难以使用。
编辑:我最近在我的博客上发表了一篇关于我对这个潜在决定的感受的文章......
IMO,目前没有。
很明显(特别是从最近的公告来看)EF 正在进行一些重大修订,因为LINQ-to-SQL 和 EF 之间出现了“雷电”场景。无论发生什么,EF(几年后)几乎肯定会与今天的 EF 完全不同。或者当然“足够不同”;-p
因此,我的观点是:坚持简单。简单的是 LINQ-to-SQL。
如果我知道它很快就会改变,那么学习一个臭名昭著的复杂系统并没有多大好处。
在 LINQ-to-SQL 上,我 100% 支持你;-p
如果我现在需要的不仅仅是 LINQ-to-SQL,我会考虑NHibernate或者LLBLGen Pro。
(编辑——作为更新,我的立场有所软化,在这里和这里——但我仍然使用 LINQ-to-SQL 作为我的主要工具;另外——LINQ-to-SQL还没有完全消亡;- p)。
我已经完成了一些 MVC 项目,现在在生产环境中使用 L2SQL 并发现它使用起来非常愉快。我现在正在着手一个新项目,并决定使用 EF 和 L2EF 编写它,因为之前引用的文章宣称 L2SQL 已死。仅仅几天后,我决定回到 L2SQL。简单的事情,比如必须使用下面显示的糟糕语法或不必要的查找来为插入设置外键,这让我感到震惊。
foo.Foreign_TypeReference.EntityKey =
new EntityKey("DataContextName.Foreign_Type", "Foreign_Type_Id", ForeignTypeId);
而不是:
foo.Foreign_Type_Id = ForeignTypeId;
我认为将 L2SQL 移植到 EF 的未来版本并不难,因为 L2SQL 具有功能的子集(尽管实现得更好)。L2SQL 拥有而 L2EF 没有的一些东西,例如 Single() 和 SingleOrDefault(),可以通过创建一些扩展方法迁移到 EF。我认为使用 L2SQL 让系统运行并在以后 EF 不那么臭时将其移植过来将花费更少的时间。
如果您正在进行数据库驱动的开发,那么 EF 在今天具有真正的优势。
我同时使用了 LINQ to SQL 和 EF,并克服了 EF v1 的许多小挫折。
然而,让 EF v1 为我赢得胜利的一件事是来自数据库向导的惊人的好更新。令人难以置信的是,这确实有效!这听起来可能微不足道,但如果您正在进行数据库优先设计,您希望依靠工具为您创建类,并且您不希望仅仅为了进行更改而重新生成整个模型。
仅此一项就使 EF v1 成为我的选择。我建议忽略 EF v1 的高级功能——它远没有作为它目标的雄心勃勃的平台可用。
忍受 EF v1 的笨拙,您将处于未来的最佳位置。
皮特。
我必须同意 Marc Gravell 的观点。可能下一个版本的Entity Framework(.net 4.0 / VS2010)发布时,使用EF会有优势,到那时它可能与当前版本的EF有很大的不同。
在那之前,至少我会避免像瘟疫一样的 EF,除了永远不会投入生产的测试/实验代码。
EF msdn 论坛充满了关于为什么 EF 还没有为黄金时段做好准备的例子,但我有一个特别的例子是一个明显的赢家——通常是一个简单的五表查询(10-15 行 SQL)使用 EF 和 EntityDataSource 控件时变为>1500 行 SQL :
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=3874607&SiteID=1
http://paste-it.net/public/q6ed5c2/
至于 EF 的未来——随着微软在一夜之间改变重大战略方向的历史,谁知道他们目前与 EF 的“战略目标”是否会在几年后实现..?我肯定不会赌它。看:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=4100399&SiteID=1#4107623
除非您使用 SQL Server(或 SQL Server compact),否则 LINQ to SQL 似乎不是一个选项,所以这足以让我避免使用它并使用 EF(我想使用 PostgreSQL)。
EF v1 中肯定有足够多的东西让我犹豫是否推荐它。听起来 EF 的第 2 版(发布时)将是第一个可以认真推荐切换到的版本。
很多有经验的开发人员都给出了“ ADO .NET Entity Framework 不信任投票”,这将在此处进一步讨论。
我认为我们期望ADO.Net 团队在.Net 4.0中对其进行显着改进。
这是最近 PDC 的一些视频。
最近,我不得不研究应该使用哪个 ORM 项目。起初 - 尝试 L2S。它一点也不差,但它已经过时了(MS 将不再支持它),这就是我开始检查 L2E 的原因。我对生成的代码很好,但是创建假视图、实体和它们之间的映射只是为了使存储过程可用而不是填充实体的所有字段,这对我来说太过分了。而且我想分离我的数据访问层,所以 - 我必须将数据从生成的对象映射到我制作的对象。
我花了几个小时试验 NHibernate+Fluent NHibernate+LINQ to NHibernate
来坚持这种组合。