协慌网

登录 贡献 社区

实体框架与 LINQ to SQL

现在已经发布了. NET v3.5 SP1(以及 VS2008 SP1),现在我们可以访问. NET 实体框架了。

我的问题是这个。在尝试使用 Entity Framework 和 LINQ to SQL 作为 ORM 时,有什么区别?

我理解它的方式,实体框架(当与 LINQ to Entities 一起使用时)是 LINQ to SQL 的 “大哥”?如果是这种情况 - 它有什么优势?它能做什么 LINQ to SQL 本身无法做到的?

答案

LINQ to SQL 仅支持 Microsoft SQL Server 中可用的数据库表,视图,Sproc 和函数的 1 对 1 映射。这是一个很好的 API,用于快速数据访问构建到相对精心设计的 SQL Server 数据库。 LINQ2SQL 最初是与 C#3.0 和. Net Framework 3.5 一起发布的。

LINQ to Entities(ADO.Net 实体框架)是一种 ORM(对象关系映射器)API,它允许广泛定义对象域模型及其与许多不同 ADO.Net 数据提供者的关系。因此,您可以混合和匹配许多不同的数据库供应商,应用程序服务器或协议,以设计由各种表,源,服务等构建的对象的聚合混搭. ADO.Net Framework 随之发布. Net Framework 3.5 SP1。

这是关于 MSDN 的一篇很好的介绍性文章: 介绍 LINQ 到关系数据

我认为快速而肮脏的答案就是这样

  • LINQ to SQL 是一种快速简便的方法。这意味着如果你正在做一些更小的事情,你会更快,更快地交付。
  • 实体框架是一种全面,无拘无束的方式。这意味着如果你正在做更大的事情,你会花更多时间在前面,发展得更慢,并且具有更大的灵活性。

LINQ to SQL 真的死了吗?作者:Jonathan Allen 来自 InfoQ.com

Matt Warren 将 [LINQ to SQL] 描述为 “甚至从未存在过”。从本质上讲,它应该是替代它来帮助他们开发 LINQ,直到真正的 ORM 准备就绪。

...

实体框架的规模导致它错过了. NET 3.5 / Visual Studio 2008 的最后期限。它很快就被命名为 “.NET 3.5 Service Pack 1”,它更像是一个主要版本而不是一个服务包。

...

由于复杂性,开发人员不喜欢 [ADO.NET Entity Framework]。

...

从. NET 4.0 开始,LINQ to Entities 将成为 LINQ 到关系场景的推荐数据访问解决方案。