LINQ to Dataset 是 LINQ to EF 的子集还是这两者是独立的?
3 回答
他们是独立的。
Linq to Dataset 适用于以前使用 ADO.NET 创建的 DataSet。数据集在使用 linq 之前加载,因此 SQL 查询不是动态构建的。
Linq to EntityFramework 针对实体框架上下文工作。这里的 SQL 查询是根据您提供的 Linq 查询动态构建的。
Linq 使用 queryProviders 的概念。查询提供者负责将兰巴表达式转换为对底层数据存储的查询。正如 Obalix 在我之前所说的那样,Linq to Entities 查询提供程序将带有 lambdas 的 linq 转换为使用底层 ado.net 对象执行的真实 sql。在此处查看规范函数,它们被翻译成 sql(并注意哪些不是)。另一方面,linq to dataset 对数据集基础设施起作用。您可能还记得 Data Set 有一些与之关联的查询。(获取器、更新、删除、插入)与 DataAdapters 对象的使用。Linq 查询映射到数据集中已经存在的对象 = 表、列等。SQL 查询没有构建,因为提供程序不在如此低的级别上运行 - 数据集是它使用的数据抽象。
如果您不关心数据库不可知论,您可能会看一下 linq to SQL,如果我没听错的话,甚至还有一些供应商 linq to Oracle。
他们是独立的,甚至不能很好地合作。
LINQ-to-Datatsets 是一组扩展方法,允许基于 IEnumerable 对已加载到 DataTables 中的数据进行 LINQ 查询。它接近于查询 List<> 和其他集合。
LINQ-to-Entities 使用查询提供程序和 IQueryable 将 LINQ 查询转换为 SQL 查询。它还提供将数据库表建模为对象。
如果您使用 EF,您可以编写(更多)面向对象,使用 DataSets 仍然是面向数据库的。