我开始设计一个新的应用程序,我想知道的是人们对Linq2SQL或Linq2Entities的看法,他们认为这是更好的快速开发技术。
我也在研究ADO.net数据服务。
答案 0 :(得分:13)
是的,同意Slace。
请注意您选择的框架,以确保它满足您的所有需求。
例如,我最近在一个工作项目中强化了实体框架,因为它不能满足我的需求,主要是因为: -
除此之外,命令和框架似乎是直截了当的,而且我使用EF的原因是:
进一步阅读(另一篇SO帖子):
Is LINQ to SQL Dead or Alive?
我很想选择EF,我真的不知道如何制造L2S与EF的比赛,如果L2S真的是一个死鸭,耸耸肩。我承认使用EF的主要抱怨是NotSupportedException - 如果我可以在linq中执行方法调用而没有得到这个,我可以绕过延迟加载......
答案 1 :(得分:8)
如果您满足以下设计要求,我就是LINQ to SQL的忠实粉丝:
我没有对Entity Framework做过大量工作,但据我所知和我所做的是,当它从LINQ to SQL使用的同一数据库生成时,它没有那么好的性能。 / p>
性能较低是由于Entity Framework的性质,它使用ADO而不是您正在使用的数据库服务器的特定提供程序。
答案 2 :(得分:3)
我想说,对于简单到中等的数据库模式,Linq2SQL运行良好,更易于设置和使用。这是我用于ORM的一些小调整,通过部分类来支持验证和授权/审计。我使用DBML设计器并添加我的表/关系。我更改了DataContext以使其变得抽象,并构建了一个具体的实现,它允许我提供我的表值函数/存储过程(映射到数据上下文中作为方法)的实现,这些实现为审计和授权提供了钩子。我在OnValidate和OnLoad的实体类上实现了部分方法,以在表级执行验证和授权。我发现这几乎是我所需要的。最近,我一直在为具体数据上下文定义一个接口和包装器,以便允许我在单元测试中模拟它。
答案 3 :(得分:3)
与ADO.NET数据服务(您提到)一起使用,实体框架是开箱即用的框架。如果要使用LINQ-to-SQL(通过ADO.NET数据服务)更新数据,则需要执行一些工作来实现IUpdatable
。幸运的是,我一直在写关于this week的博客。
我对两者之间的整体想法都有涵盖here,但从那时起我已经软化了一点,见here。
基本上,目前我更喜欢LINQ-to-SQL,但我希望EF在下一版本中更有用。因此,我正在努力让LINQ-to-SQL与ADO.NET数据服务一起工作。
答案 4 :(得分:2)
我认为Linq 2 Sql是一个很好的选择。几点:
答案 5 :(得分:1)
我的投票是Linq-to-SQL。它适合您的快速开发场景;易于上手,易于使用。此外,它还可以从Linq表达式生成高效/高效的SQL查询。
Linq-to-Entities非常笨重,如果您尝试使用任何本应将其设置为远离L2S的“高级”功能,那么您将不得不使用XML编辑器开始编辑EDMX模型文件(您'很快就会遇到设计师的“限制”,微软推荐的唯一解决方法/解决方案就是使用XML编辑器手动操作EDMX。最重要的是,它往往会产生非常差/低效的SQL查询。
微软表示,下一版本的Entity Framework将会更好,并将支持L2S的所有好处。然而,下一个版本不会很快发布,所以在那之前L2S是你最好的选择。
答案 6 :(得分:0)
我建议您查看ORM的非Microsoft软件解决方案。 nHibernate是一个很好的解决方案,拥有这两个框架的所有好处以及更多。是的,它的学习曲线更陡峭,但流利的nHibernate对此有所帮助。值得努力。
答案 7 :(得分:0)
没有人能说肯定 更好。
两个技术人员都有问题(NHibernate也存在问题)。
我正在使用Linq-to-SQL并且非常满意。对于我的观点,Linq-to-SQL中的问题少于EF ^ _ ^。
答案 8 :(得分:0)
我们认为L2S很棒,直到我们尝试更新。然后它很可悲。我做其他事情时,我的同事正在完成大部分工作。他谈到了EF以及过度配置使得它使用起来混乱的方式。
我建议,既然我们以MSSQL为目标并且不会改变,那么他可能会破解所有数据库提供程序的抽象内容。一段时间后,他告诉我这是一个很好的建议,他的代码更简单,更难以维护。
我很好奇这个答案被投票 down 的基础。它描述了实际经验,并讨论了另一种策略以及该方法的相对成功。向下投票是针对误导,事实不正确或只是简单拖钓的答案。
碰巧我改变了我对整个EF vs L2S事物的立场,但这并没有改变这样一个事实,即仅仅因为它表达了与你自己不同的观点而进行了投票,这种观点是婴儿的,并且与精神完全背道而驰StackOverflow。
答案 9 :(得分:0)
这是一个非常古老的问题,但LinqToSql对最高投票答案的啦啦队关注我。 LinqToSql存在明显的缺点。
Do not use the Visual Studio 2008 LinqToSql O/R Designer
The drawbacks of adopting Linq To Sql
也就是说,EntityFramework也有很多缺点。
现有更多更好的选择(NHibernate现在是最好的选择)。
答案 10 :(得分:-1)
Linq to SQL如今已经走到了尽头,因为微软不会再对其进行更新了。我为自己的项目使用了一段时间,但我发现它与真正的SQL相比功能不足。当然,在短期内运行似乎更容易,但在应用程序的开发周期中,您会发现您更喜欢SQL的强大功能。
我认为LINQ TO SQL只应该由那些严重依赖于框架的抽象层并且没有时间/精力/欲望来追求SQL的人采用。
您应该记住的另一件事是SQL和您的应用程序之间的额外层有自己的成本。速度差异不是你容易注意到的,但它就在那里。
就我个人而言,我建议那些刚开始学习的人应该直接学习SQL,并且错过LINQ to SQL。