实体框架4与LINQ to SQL,适用于中小型应用程序,与SQL Server一起使用

时间:2010-10-29 12:02:42

标签: sql-server linq-to-sql entity-framework-4

我在4月份推出VS2010时发现了有关L2S与EF4在Stack Overflow上的一些讨论,即:

Dump Linq-To-Sql now that Entity Framework 4.0 has been released?

Is Entity Framework worth moving to for a new small app?

现在,经过6个月,大概有人与EF4进行了更多的互动,所以我对新观点感到好奇,特别是在考虑只使用SQL Server时。

我经常使用LINQ to SQL,而且只使用了EF4。我不介意跳进去学习更多的EF4,我不相信,如果我的应用程序只与SQL Server交谈,那么它的额外复杂性是值得的。

所以,如果你对这两者都有一些经验,那么你现在要用SQL Server后端启动一个新的中小型应用程序,你会选择哪一个?

当然,为什么......

5 个答案:

答案 0 :(得分:14)

这取决于......:)

如果您不需要EF添加任何额外功能,则L2S通常为:

  • 更容易上手和使用,
  • 执行从Linq查询到TSQL的更直接的翻译,并支持将更简单的.net方法转换为TSQL,而L2E依赖于“特殊”方法来处理日期/时间比较等事宜,
  • 由于表和实体类之间的直接1:1映射,
  • 并且运行时开销较小。

EF增加了更多功能,例如支持其他RDBMS和比普通1:1更复杂的映射,支持几种不同类型的实体继承等。这带来了成本:

  • 运行时开销高于L2S,
  • 编写针对EF的linq查询稍微更容易遇到由于使用不支持的CLR方法而无法转换为TSQL的表达式,或者需要使用L2E的“special methods”和
  • 由于双层(存储模型和概念模型)以及它们之间的映射,因此可能需要花费更多的时间来绕过EF模型而不是L2S模型。在xml编辑器中手动调整模型文件并不罕见。

简而言之:

  1. 如果你的应用很简单,那就是你 只需要支持SQL Server,和 您的数据库架构/数据模型是干净的 足以让你不需要做更多 高级映射然后L2S是一个伟大的 选择。虽然不太可能 MSFT将添加任何新的大功能 对它来说,这不是必要的。 它工作得很好并且解决了 应该解决的问题。很多应用程序和网站(包括这个)在L2S上运行良好。
  2. 如果您需要支持其他数据库 比SQL Server,或者你的数据库 架构与对象不匹配 您想要的模型,或者您需要其他模型 EF的“更大”功能,然后你 应该使用EF。

答案 1 :(得分:4)

我工作的公司是一家价值25亿美元到30亿美元的太阳能制造公司。我们将L2S用于所有下一代制造应用。它并非没有它的疣,但我们发现它很快(与许多人的想法相反),灵活且易于使用。我们没有遗憾。它做我们需要它做的一切。

答案 2 :(得分:1)

Nhibernate的。或针对特殊情况的BLToolkit。 Linq2Sql和EntityFraemwork仍然落后于后代。

答案 3 :(得分:1)

在我看来,LINQ To SQL的未来有点不清楚。我个人会选择实体框架,因为它提供了最大的灵活性,因为它似乎是微软指导未来发展重点的地方。我一直在使用实体框架,虽然确实有一些怪癖,但我在很大程度上对它感到满意。

答案 4 :(得分:0)

几乎在任何情况下我都会使用Entity Framework。最大的缺点是,一旦你上线而没有吹嘘和重新生成,就没有什么方法可以调整/改进你的模型。那个和EF可以做任何事情你可以用l2s和更多,同时拥有更好的工具等。