ASP.NET MVC + LINQ to SQL或实体?

时间:2009-06-10 03:04:30

标签: asp.net-mvc linq-to-sql

当linq to entities被释放时,每个人都说linq to sql已经死了。

但是微软员工的大多数书籍和示例项目都使用mvc + linq来实现sql。

有一些原因吗?对于POCO,linq to sql似乎更好,是吗?

6 个答案:

答案 0 :(得分:9)

Linq to SQL had its origins in a thought experiment。 Linq需要一个概念证明,而Linq to SQL提供了这一点。

从那时起,用户社区中的许多人(包括a few prominent Microsoft employees)都将Linq to SQL作为轻量级SQL Server ORM的选择,特别是对于像NerdDinner这样的小型项目。

ADO.NET团队以this post开始致富。在其中,他们表示将维护Linq to SQL,并根据用户社区反馈添加功能,但实体框架将成为未来数据访问工作的主要焦点。

用户社区中的许多人将此举理解为“Microsoft is killing Linq to SQL”。

微软在disabled the provider model for Linq to SQL by sealing some critical classes时没有帮助,实际上使Linq to SQL只能用于SQL Server。实体框架将是multiple data providers的首选ORM。

不幸的是,the Entity Framework seems not quite ready for prime time

所以这取决于你相信谁。你是否相信许多博主的猜测(他们只是猜测)谁说Linq to SQL真的死了,埋没了,或者你相信人们喜欢微软的Damien Guard,谁说Linq to SQL has a long life ahead of it

答案 1 :(得分:3)

Linq-to-SQL是一项出色的技术,非常易于使用,所以它非常适合演示,对于更小,更直接的项目来说,它也是一个完美的选择,你或多或少有一个直接1: 1从SQL Server中的表映射到内存中的对象。

这些是Linq-to-SQL最严格的限制:

  • 仅限SQL Server
  • 直接1:1从表格到内存中的对象的映射

如果你没问题,请继续使用Linq-to-SQL!无论如何 - MS仍然在为.NET 4.0添加功能并修复它 - 它不是一蹴而就的。

现在可用的v1版本中的实体框架有一些瑕疵,正如其他海报正确提到的那样(没有POCO支持,没有“域设计优先”方法和许多其他方法)。但是EF v4功能集看起来非常引人注目,并且会让Linq-to-SQL获得收益!

企业环境中EF与Linq-to-SQL的主要优点是它的数据库独立性(您可以将它连接到Oracle,Firebird,DB2,以及许多其他),这可能是至关重要的,它能够为您呈现具有与数据库中的物理存储模型完全不同的对象模型(通过概念层和物理存储层之间的映射)。

所以这真的是你需要什么:你需要一个快速入门的方法(演示,更简单的应用程序) - 然后你的选择显然是Linq-to-SQL(至少现在),或者做您需要针对非SQL Server后端的灵活映射方法 - 然后您的选择将是实体框架。

马克

答案 2 :(得分:1)

使用LINQ-to-SQL编写样本的唯一原因是因为设置它是快速而简单的。

否则,您可以使用任何 ORM来适合您,无论是EF还是NHibernate等等。

答案 3 :(得分:1)

就个人而言,我现在开始习惯实体框架。由于它具有更多功能,独立于提供商,并且正在(或许)更积极地开发。我听到的两个最常见的抱怨是缺乏POCO和缺乏延迟加载。似乎这两个都在.NET 4.0 http://blogs.msdn.com/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types-deferred-loading-and-explicit-loading.aspx

中得到解决

除了可能更快(开始使用)或更简单之外,从长远来看,我不确定使用LINQ to SQL的任何特定优势。有人知道吗?

答案 4 :(得分:0)

ScottGu编写的nerddinner示例章节使用Linq-To-SQL,他不支持LINQ-to-SQL,但也没有提升LINQ-To-Entities。使用ViewModel(Stephen Walther对此有一个很好的帖子)&存储库模式,LINQ-To-SQL非常适合开发ASP.NET MVC应用程序

答案 5 :(得分:0)

在我看来,Linq to Entity目前不是一个好的候选人 。我不喜欢Linq To Entity的一件事就是缺乏延迟加载,每次我编写我的存储库时都会把我推到墙上。我想,这就是为我而杀的原因。另一个问题是附加和分离由对象上下文的多个实例使用的实体的整个问题。这对我来说是另一个杀手,导致大量黑客试图重建实体关系等等。坦率地说,我认为更好的办法是等待下一个版本的框架。我认为好的事情正在发生:)