[英]ASP.NET MVC + LINQ to SQL or Entities?
当linq to entities被释放时,每个人都说linq to sql已经死了。
但是大多数书籍和示例项目由微软员工使用,使用mvc + linq来实现sql。
这是有原因的吗? 对于POCO,linq to sql看起来更好,不是吗?
Linq to SQL起源于思想实验 。 Linq需要一个概念证明,而Linq to SQL提供了这一点。
从那时起,许多用户社区(包括一些着名的微软员工 )已经将Linq to SQL作为轻量级SQL Server ORM的首选,特别是对于像NerdDinner这样的小型项目。
ADO.NET团队的这篇文章开始引起轰动。 在其中,他们表示将维护Linq to SQL,并根据用户社区反馈添加功能,但实体框架将成为未来数据访问工作的主要焦点。
用户社区中的许多人将此举理解为“ 微软正在杀死Linq to SQL” 。
当Microsoft 通过封装一些关键类来禁用Linq to SQL的提供程序模型时,微软没有帮助,实际上使Linq to SQL只能用于SQL Server。 实体框架将成为多个数据提供者的首选ORM。
不幸的是, 实体框架似乎还没有为黄金时间做好准备 。
所以这取决于你相信谁。 你是否相信许多博主的猜测(他们只是猜测)谁说Linq to SQL真的死了,埋没了,或者你是否相信人们喜欢微软的Damien Guard,他说Linq to SQL的生命早就有了它 ?
Linq-to-SQL是一项非常出色的技术,非常易于使用,所以它非常适合演示,对于更小,更直接的项目来说,它也是一个完美的选择,你可以从中获得或多或少的直接1:1映射SQL Server中的表到内存中的对象。
这些是Linq-to-SQL最严格的限制:
如果你没问题,请继续使用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后端的灵活映射方法 - 然后您的选择将是实体框架。
渣
使用LINQ-to-SQL编写样本的唯一原因是因为设置它是快速而简单的。
否则,您可以使用任何 ORM来适合您,无论是EF还是NHibernate等等。
就个人而言,我现在开始习惯实体框架。 由于它具有更多功能,独立于提供商,并且正在(或许)更积极地开发。 我听到的两个最常见的抱怨是缺乏POCO和缺乏延迟加载。 似乎这两个都在.NET 4.0中得到解决http://blogs.msdn.com/adonet/archive/2009/05/28/poco-in-the-entity-framework-part-2-complex-types -递延装载和显式-loading.aspx
除了可能更快(开始使用)或更简单之外,从长远来看,我不确定使用LINQ to SQL有什么特别的优势 。 有人知道吗?
ScottGu编写的nerddinner示例章节使用Linq-To-SQL,他并不支持LINQ-to-SQL,但也没有提升LINQ-To-Entities。 借助ViewModel(Stephen Walther对此有一个很好的帖子)和存储库模式,LINQ-To-SQL非常适合开发ASP.NET MVC应用程序
在我看来,LINQ到实体是不是现在一个很好的候选人。 我不喜欢Linq To Entity的一件事就是缺乏延迟加载,每次我编写我的存储库时都会把我推到墙上。 我想,这就是为我而杀的原因。 另一个问题是附加和分离由对象上下文的多个实例使用的实体的整个问题。 这对我来说是另一个杀手,导致大量黑客试图重建实体关系等等。坦率地说,我认为更好的办法是等待下一个版本的框架。 我觉得好事情要来了:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.