【问题标题】:Is LINQ to Dataset subset of LINQ to EF or these two are independent?LINQ to Dataset 是 LINQ to EF 的子集还是这两者是独立的?
【发布时间】:2011-01-27 04:13:55
【问题描述】:

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

【问题讨论】:

    标签: c# linq linq-to-entities linq-to-dataset


    【解决方案1】:

    他们是独立的。

    • Linq to Dataset 适用于之前使用 ADO.NET 创建的 DataSet。数据集在使用 linq 之前加载,因此 SQL 查询不是动态构建的。

    • Linq to EntityFramework 针对实体框架上下文工作。这里的 SQL 查询是根据您提供的 Linq 查询动态构建的。

    【讨论】:

      【解决方案2】:

      Linq 使用 queryProviders 的概念。 查询提供者负责将兰巴表达式转换为对底层数据存储的查询。 正如 Obalix 在我之前所说的那样,Linq to Entities 查询提供程序将带有 lambda 的 linq 转换为使用底层 ado.net 对象执行的真实 sql。看看规范函数here,它们被翻译成sql(并注意哪些不是)。 另一方面,linq to dataset 适用于数据集基础设施。您可能还记得 Data Set 有一些与之关联的查询。 (获取器、更新、删除、插入)与 DataAdapters 对象的使用。 Linq 查询映射到数据集中已经存在的对象 = 表、列等。没有构建 SQL 查询,因为提供程序不在如此低的级别上运行 - 数据集是它使用的数据抽象。

      如果你不关心数据库不可知论,你可以看看 linq to SQL,如果我没听错的话,甚至还有一些供应商 linq to Oracle。

      【讨论】:

        【解决方案3】:

        他们是独立的,甚至不能很好地合作。

        LINQ-to-Datatsets 是一组扩展方法,允许基于 IEnumerable 对已加载到 DataTables 中的数据进行 LINQ 查询。它接近于查询 List 和其他集合。

        LINQ-to-Entities 使用查询提供程序和 IQueryable 将 LINQ 查询转换为 SQL 查询。它还提供将数据库表建模为对象。

        如果您使用 EF,您可以编写(更多)面向对象,使用 DataSets 仍然是面向数据库的。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2010-09-20
          • 1970-01-01
          • 2011-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多