LINQ是对象关系映射器吗?

时间:2008-10-11 07:02:44

标签: database linq

LINQ是一种对象关系映射器吗?

6 个答案:

答案 0 :(得分:10)

LINQ本身就是一组语言扩展,有助于查询,可读性和减少代码。 LINQ to SQL是一种OR Mapper,但它并不是特别强大。 Entity Framework通常被称为OR Mapper,但它确实很多more

还有其他几个LINQ to X 实现,包括LINQ to NHibernate和LINQ to LLBLGenPro,它们以与实体框架大致相似的方式提供OR映射和支持框架。 / p>

如果您只是在学习LINQ,我建议您坚持使用LINQ to Objects来感受它,而不是潜入其中一种更复杂的风格: - )

答案 1 :(得分:6)

LINQ根本不是ORM。 LINQ是一种查询“东西”的方式,可以或多或少地被视为针对不同事物的类似SQL的语言扩展(IEnumerables)。

可以查询各种类型的“东西”,其中包括SQL Server数据库。这称为LINQ-to-SQL。它的工作方式是它根据数据库结构和查询生成(隐式)类。从这个意义上讲,它更像是代码生成器。

LINQ-to-SQL不是ORM,因为它根本不会尝试解决对象 - 关系阻抗不匹配问题。在ORM中,您可以设计类,然后手动将它们映射到表或让ORM生成数据库。如果您因任何原因(通常是重构,重新规范化,非规范化)更改数据库,很多时候您可以通过更改映射来保持类的原样。

LINQ-to-SQL什么都不做。您的LINQ查询将与数据库结构紧密耦合。如果更改数据库,则可能还需要更改LINQ。

答案 2 :(得分:2)

LINQ to SQL(Visual Studio 2008的一部分)是一个OR Mapper。

LINQ是一种新的查询语言,可用于查询许多不同类型的源。

答案 3 :(得分:2)

LINQ本身不是ORM。 LINQ是允许您查询SQL等对象的语言特性和方法。

“LINQ to SQL”是一个提供程序,它允许我们使用LINQ来对抗SQL强类型对象。

答案 4 :(得分:2)

答案 5 :(得分:0)

使用dbml设计器的Linq To SQL是,否则Linq只是Enumerables的一组扩展方法。