我开始设计一个新的应用程序,想知道人们对Linq2SQL或Linq2Entities的意见,以及他们认为哪种技术更适合快速开发。
我还在研究ADO.net数据服务。
我开始设计一个新的应用程序,想知道人们对Linq2SQL或Linq2Entities的意见,以及他们认为哪种技术更适合快速开发。
我还在研究ADO.net数据服务。
同意Slace的观点。
但是选择框架时要小心,确保它能满足您的所有需求。
例如,最近我从一个工作项目中剔除了Entity Framework,因为我在过去几周里一直在与它紧密合作,但由于以下原因它无法满足我的需求:
除此之外,命令和框架似乎非常简单明了,我选择EF的原因是:
进一步阅读(另一个SO帖子):
LINQ to SQL是死了还是活着?
我想使用EF,但我真的不知道如何对比L2S和EF,并且如果L2S真的是一只死鸭子,我无能为力。我主要抱怨EF中的NotSupportedException - 如果我在linq中执行方法调用而不会遇到这个异常,我就可以绕过延迟加载...
如果满足以下设计要求,我很喜欢LINQ to SQL:
我没有在Entity Framework上做过太多的工作,但从我所了解和做过的事情来看,与从相同的数据库生成的LINQ to SQL相比,它的性能不够好。
性能较低是由于实体框架的性质,它使用ADO而不是针对你正在使用的数据库服务器的特定提供程序。
我推荐使用Linq-to-SQL。它适合快速开发场景,易于上手和使用。此外,它能从Linq表达式生成良好/高效的SQL查询。
Linq-to-Entities相对笨重,如果你尝试使用任何“高级”功能以使其与L2S区分开来,则必须开始使用XML编辑器编辑EDMX模型文件(在设计师中会遇到“限制”,微软建议的唯一解决方案是使用XML编辑器手动操作EDMX)。此外,它往往会生成非常糟糕/低效的SQL查询。
微软表示下一个版本的Entity Framework将更加出色,并且将支持L2S的所有优点。但是,下一个版本不会很快发布,因此在那之前,L2S是你最好的选择。
我们曾经认为L2S很棒,直到我们尝试进行更新。然后它就变得很糟糕了。我的同事负责大部分工作,而我则做其他事情。他谈到了EF以及过度可配置性带来的混乱使用方式。
我建议说,既然我们的目标是MSSQL,而且这不会改变,他可以删除所有数据库提供程序抽象的内容。一段时间后,他告诉我这是一个好建议,他的代码更简单,维护起来也不那么麻烦了。
我很好奇这个回答被投票 反对 的基础是什么。它描述了实际经验,并讨论了另一种策略及其相对成功的情况。投票反对是针对那些误导性、事实不正确或纯粹是恶意评论的答案。
碰巧我已经改变了我的立场,关于整个 EF vs L2S 的问题,但这并不改变一个事实,那就是仅仅因为表达了与你不同的观点而将其投票反对是幼稚的,完全违背了 StackOverflow 的精神。
没有人能够确定哪种技术更好。
这两种技术都有问题(NHibernate也有问题)。
我正在使用Linq-to-SQL,并且对它感到非常满意。在我看来,Linq-to-SQL的问题比EF少得多 ^_^。
这是一个相当古老的问题,但是最高票答案中对 LinqToSql 的支持让我担忧。LinqToSql 有明显的缺点。
不要使用 Visual Studio 2008 LinqToSql O/R 设计器
话虽如此,EntityFramework 也有明显的缺点。
有更好的选择可供选择(NHibernate 是现在所有最佳的选择)。