Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ObjectQuery-它是什么,如何访问它?_C#_Entity Framework_Linq To Entities - Fatal编程技术网

C# ObjectQuery-它是什么,如何访问它?

C# ObjectQuery-它是什么,如何访问它?,c#,entity-framework,linq-to-entities,C#,Entity Framework,Linq To Entities,我正在仔细阅读 这些文档中的主要功能,但我不太明白它是什么。据我所知,它是一个表示查询的对象。我一直认为,当我编写Linq查询时,我会从中得到一个IQueryable,这样我可以a)进一步编写它,或者b)枚举它,以便它从数据库中获取数据 ObjectQuery与IQueryable有何不同 文章中提到的“命令树查询”是什么?它与表达式树有何不同 我是否可以从编写Linq查询时获得的IQueryable中获得ObjectQuery 链接: 它是System.Data的一部分,与LINQ分离。因为它

我正在仔细阅读

这些文档中的主要功能,但我不太明白它是什么。据我所知,它是一个表示查询的对象。我一直认为,当我编写Linq查询时,我会从中得到一个
IQueryable
,这样我可以a)进一步编写它,或者b)枚举它,以便它从数据库中获取数据

  • ObjectQuery
    IQueryable
    有何不同
  • 文章中提到的“命令树查询”是什么?它与表达式树有何不同
  • 我是否可以从编写Linq查询时获得的
    IQueryable
    中获得
    ObjectQuery
  • 链接:


    它是System.Data的一部分,与LINQ分离。因为它将SQL字符串转换为对象,所以如果出于某些原因,您不想使用LINQ或EF,它可能会很有用。EF中较新的版本是

    context.SqlQuery("Select * from Students").ToList<Student>();
    
    context.SqlQuery(“从学生中选择*).ToList();
    
    就跟

    new ObjectQuery<Student>("Select * from Students", context).
    
    newobjectquery(“从学生中选择*”,上下文)。
    
    其中,后一行中的上下文是对象上下文,第一行中是DBContext。 这一切都不是强类型的,因此“更简单”或快速脏。这不是推荐的方式


    推荐的方法是使用DbSet,而不处理SQL字符串(如果可以避免的话)。

    事实上,它已经过时了,曾经很重要,在EF 5之前,这是处理查询的方法,保留它是为了向后兼容,以及ObjectContext。除非你有旧的代码需要维护,否则不要开始学习这一点。这篇文章并没有真正指出这是一种老方法。他们应该说得更清楚。
    ObjectQuery
    是否与Linq to Entities和EF 6有关?正如您在定义中看到的:
    公共类ObjectQuery:System.Data.Objects.ObjectQuery,System.Collections.Generic.IEnumerable,System.ComponentModel.IListSource,System.Linq.IOrderedQueryable,System.Linq.IQueryable
    它是它的一部分;从EF 1,2,3开始就存在了。首先从数据库开始,涉及EDMX文件和检查数据库生成的代码。今天,我们宁愿使用代码优先模型。您可以手动编写代码并从中创建数据库。也许我们可以把一个对象查询看作一个低级层,也许它是EF内部使用的。