LINQ是一种对象关系映射器吗?
LINQ本身就是一组语言扩展,有助于查询,可读性和减少代码.LINQ to SQL是一种OR Mapper,但它并不是特别强大.在实体框架通常被称为OR映射器,但它确实不可小视更多.
还有其他几个LINQ to X实现,包括LINQ to NHibernate和LINQ to LLBLGenPro,它们以与实体框架大致相似的方式提供OR Mapping和支持框架.
如果您只是在学习LINQ,我建议您坚持使用LINQ to Objects来感受它,而不是潜入其中一个更复杂的风格:-)
LINQ根本不是ORM.LINQ是一种查询"东西"的方式,可以或多或少地被视为针对不同事物的类似SQL的语言扩展(IEnumerables).
可以查询各种类型的"东西",其中包括SQL Server数据库.这称为LINQ-to-SQL.它的工作方式是它根据数据库结构和查询生成(隐式)类.从这个意义上讲,它更像是一个代码生成器.
LINQ-to-SQL不是ORM,因为它根本不会尝试解决对象 - 关系阻抗不匹配问题.在ORM中,您可以设计类,然后手动将它们映射到表或让ORM生成数据库.如果随后因任何原因(通常是重构,重新规范化,非规范化)更改数据库,很多时候您可以通过更改映射来保持类的原样.
LINQ-to-SQL没有那种做法.您的LINQ查询将与数据库结构紧密耦合.如果更改数据库,则可能还需要更改LINQ.