4

我知道 LINQ 的好处,并且知道在 .Net 应用程序中使用它。我填写了作为实体框架提供的相同内容。

那么 LINQ 和实体框架之间的主要区别是什么?

4

4 回答 4

11

LINQ可以应用于任何数据源:内存中的对象、XML、SQL...

实体框架可以使用 LINQ 对关系数据库执行查询。

LINQ to SQL是实体框架的前身,现在已经过时。

于 2013-01-24T07:35:04.167 回答
7

比较 EF 和 LINQ 是不正确的。两者是不同的东西,它们经常一起工作以提供更好的开发人员体验(和生产力优势)。

LINQ 正在查询可应用于任何数据源的语法/模型。EF 提供了一种这样的数据源。

于 2013-01-24T07:35:56.030 回答
2

它们有些相似,并且可以以非常相似的方式使用代码,但它们有一些重要的区别。请注意,“LINQ”与“LINQ to SQL”不同;EF 也使用 LINQ。一些显着的区别是:

  • LINQ to SQL 在很大程度上只是 SQL Server,与其说是设计上的,不如说是实现上的。如果您有兼容的 ADO.NET 提供程序,则 EF 旨在支持并且确实支持多个 DB。
  • 开箱即用,LINQ to SQL 在数据库元数据更改方面的情况非常糟糕。您必须从头开始重新生成模型的某些部分,并且会丢失自定义。
  • EF 支持多对多关系和继承等模型特性。LINQ to SQL 不直接支持这些。
  • 在 .NET 3.5 中,LINQ to SQL 对 SQL-Server 特定功能的支持比 EF 好得多。这在 .NET 4 中大部分是不正确的。它们在这方面非常相似。
  • EF 允许您选择 Model First、DB First 或 Code First 建模。开箱即用的 LINQ to SQL 真的只支持 DB First。

来源:这里

于 2013-01-24T07:35:44.263 回答
1

我完全同意VinayC。你无法真正比​​较。

使用实体框架,您将能够在程序中拥有数据库的完整表示。它将帮助您创建与数据库元素相对应的类,就像它们在数据库中一样连接在一起。您可以直接与这些类的元素进行交互,这样会影响数据库。您将在 Visual Studio 中对这些类图进行一些表示。它基本上通常比直接使用数据库元素更简单,即使设置它需要一些努力。

Linq 的用途是对数据​​源执行查询。

于 2013-01-24T10:01:47.973 回答