LINQ和实体框架之间有什么不同?

时间:2013-01-24 07:33:41

标签: c# asp.net .net ado.net

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

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

4 个答案:

答案 0 :(得分:10)

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

Entity Framework可以使用LINQ对关系数据库执行查询。

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

答案 1 :(得分:7)

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

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

答案 2 :(得分: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比EF更好地支持特定于SQL Server的功能。这在.NET 4中大多不适用;他们在这方面非常相似。
  • EF允许您选择“模型优先”,“数据库优先”或“代码优先”建模。 LINQ to SQL,开箱即用,实际上只支持DB First。

消息来源:Here

答案 3 :(得分:1)

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

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

使用Linq是对数据源执行查询。