我开始设计一个新的应用程序,我想知道人们对 Linq2SQL 或 Linq2Entities 的看法,以及他们认为快速开发的更好技术。
我也在对 ADO.net 数据服务进行一些研究。
我开始设计一个新的应用程序,我想知道人们对 Linq2SQL 或 Linq2Entities 的看法,以及他们认为快速开发的更好技术。
我也在对 ADO.net 数据服务进行一些研究。
是的,同意 Slace。
请注意您选择的框架,以确保它满足您的所有需求。
例如,我最近从一个工作项目中删除了实体框架,因为它在过去几周内非常稳固地工作,因为它不能满足我的需求,主要是因为:-
除此之外,命令和框架看起来简单明了,我选择 EF 的原因是:
进一步阅读(另一个 SO 帖子):
LINQ to SQL 是死的还是活的?
我很想选择 EF,我真的不知道如何看待 L2S 与 EF 的失败,如果 L2S 真的是一只死鸭,耸耸肩。不可否认,我对 EF 的主要抱怨是 NotSupportedException - 如果我可以在 linq 中执行方法调用而不得到这个,我可以绕过延迟加载......
如果您满足以下设计要求,我是 LINQ to SQL 的忠实粉丝:
我没有用 Entity Framework 做很多工作,但据我所知和我所做的是,当从与 LINQ to SQL 使用的相同数据库生成时,它没有那么好的性能。
较低的性能是由于实体框架的性质,它使用 ADO 而不是您正在使用的数据库服务器的特定提供程序。
我想说,对于一个简单到适度的数据库模式,Linq2SQL 工作得很好,并且更容易设置和使用。这是我用于我的 ORM 的,通过部分类进行一些小调整以支持验证和授权/审计。我使用 DBML 设计器并添加我的表/关系。我更改了 DataContext 以使其抽象并构建一个具体的实现,它允许我提供表值函数/存储过程(作为方法映射到数据上下文中)的实现,这些实现提供了用于审计和授权的钩子。我在实体类上实现了 OnValidate 和 OnLoad 的部分方法,以在表级别进行验证和授权。我发现这几乎就是我所需要的。最近,我
我认为 Linq 2 Sql 是一个很好的选择。几点:
我的投票投给了 Linq-to-SQL。适合您的快速开发场景;易于上手,易于使用。此外,它还从 Linq 表达式生成良好/高效的 SQL 查询。
Linq-to-Entities 很笨重,如果您尝试使用任何应该将其与 L2S 分开的“高级”功能,那么您将不得不开始使用 XML 编辑器编辑您的 EDMX 模型文件(您很快就会运行进入设计器中的“限制”,微软推荐的唯一解决方法/解决方案是使用 XML 编辑器手动启动 EDMX)。最重要的是,它往往会生成非常糟糕/低效的 SQL 查询。
微软表示,Entity Framework 的下一个版本会好很多,并将支持 L2S 的所有优点。但是下一个版本不会很快发布,所以在此之前 L2S 是您最好的选择。
我建议查看 ORM 的非微软解决方案。nHibernate 是一个很好的解决方案,它具有这两个框架的所有优点以及更多优点。是的,它的学习曲线更陡峭,但流畅的 nHibernate 对此有所帮助。它非常值得努力。
没有人可以肯定地说你什么更好。
两种技术都有问题(NHibernate 也有问题)。
我正在使用 Linq-to-SQL 并且对它非常满意。我认为 Linq-to-SQL 中的问题少于 EF ^_^。
在我们尝试进行更新之前,我们认为 L2S 很棒。然后就很可怜了。我的同事在做大部分工作,而我做其他事情。他谈到了 EF 以及过度可配置性使其使用变得混乱的方式。
我建议,既然我们以 MSSQL 为目标并且这不会改变,他可以破解所有数据库提供程序抽象的东西。一段时间后,他告诉我这是一个很好的建议,而且他的代码更简单,维护起来也不那么繁琐。
我很好奇这个答案被否决的依据。它描述了实际经验,并讨论了另一种策略以及该方法的相对成功。否决投票是针对具有误导性、事实上不正确或只是简单的拖钓的答案。
碰巧我已经改变了我在整个 EF 与 L2S 事情上的立场,但这并没有改变这样一个事实,即仅仅因为它表达了与你自己不同的观点而拒绝投票是幼稚的,并且与 StackOverflow 的精神完全背道而驰。
这是一个很老的问题,但投票最多的 LinqToSql 啦啦队让我很担心。LinqToSql 有很大的缺点。
不要使用 Visual Studio 2008 LinqToSql O/R 设计器
也就是说,EntityFramework 也有很大的缺点。
有很多更好的选择(NHibernate是目前最好的选择)。
如今,Linq to SQL 是一条死胡同,因为 Microsoft 不会再更新它了。我在自己的项目中使用了一段时间,但与真正的 SQL 相比,我发现它的功能不足。当然,在短期内运行似乎更容易,但在应用程序的开发周期中,您会发现您更喜欢 SQL 的强大功能。
我认为 LINQ TO SQL 应该只被那些严重依赖框架抽象层并且没有时间/精力/欲望追求 SQL 的人采用。
您应该记住的另一件事是,SQL 和应用程序之间的额外层有其自身的成本。您不会轻易注意到速度差异,但它就在那里。
就我个人而言,我建议刚开始的人应该直接学习 SQL,而不要错过 LINQ to SQL。