LINQ to Dataset是LINQ to EF的子集吗?还是这两者是独立的?

4
LINQ to Dataset是LINQ to EF的子集,它们是相互独立的吗?
3个回答

6

它们是独立的。

  • Linq to Dataset用于与之前使用ADO.NET创建的DataSet进行交互。在使用linq之前,数据集已经被加载,因此SQL查询不是动态生成的。

  • Linq to EntityFramework用于与Entity Framework上下文进行交互。这里的SQL查询是根据您提供的Linq查询动态构建的。


3
Linq使用查询提供程序的概念。 查询提供程序负责将Lambda表达式转换为基础数据存储中的查询。正如Obalix在我之前所说,Linq to Entities查询提供程序将带有Lambda的Linq翻译成真实的SQL,并使用底层ado.net对象执行。请在此处查看标准函数(这里),它们将被翻译成SQL(并注意哪些不会被翻译)。 另一方面,linq to dataset针对DataSet基础设施进行操作。正如您可能记得的那样,数据集具有与之关联的某些查询(获取器、更新器、删除器、插入器),使用DataAdapters对象。 Linq查询被映射到数据集中已经存在的对象=表、列等。不会构建SQL查询,因为提供程序不在这种低级别上操作——数据集是其使用的数据抽象。 如果数据库的不可知性不是您所关心的问题,可以看看Linq to SQL,如果我没听错的话,甚至有一些Linq到Oracle的提供程序。

3
他们是独立的,甚至不太擅长共同工作。
LINQ-to-Datasets是一组扩展方法,允许针对已加载到DataTable中的数据进行LINQ查询,基于IEnumerable。它接近于查询List<>和其他集合。
LINQ-to-Entities使用查询提供程序和IQueryable将LINQ查询转换为SQL查询。它还提供了将数据库表建模为对象的功能。
如果您使用EF,则可以编写(更多)面向对象的代码,而使用DataSets则保持面向数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接