Linq 可液化的<&燃气轮机;仅包含关于如何获取初始序列的指令(以表达式树的形式),但不包含

Linq 可液化的<&燃气轮机;仅包含关于如何获取初始序列的指令(以表达式树的形式),但不包含,linq,linq-to-entities,Linq,Linq To Entities,(一) a) someQuery是否也可以包含字符串序列,或者它只能包含关于如何从某个数据库获取该字符串初始序列的指令(以表达式树的形式) b) 我假设,即使someQuery实际上包含一个字符串的初始序列,在中选择和操作符也是没有用的,因为它们永远不会对这个字符串序列进行操作,而只是构建查询或请求执行查询(通过调用IQueryProvider.Execute)?因此someQuery必须始终包含一个表达式树,描述如何获取字符串的初始序列,即使someQuery已经包含此初始序列 多谢各位 编辑

(一)

a)
someQuery
是否也可以包含字符串序列,或者它只能包含关于如何从某个数据库获取该字符串初始序列的指令(以表达式树的形式)

b) 我假设,即使
someQuery
实际上包含一个字符串的初始序列,在
中选择
操作符也是没有用的,因为它们永远不会对这个字符串序列进行操作,而只是构建查询或请求执行查询(通过调用
IQueryProvider.Execute
)?因此
someQuery
必须始终包含一个表达式树,描述如何获取字符串的初始序列,即使
someQuery
已经包含此初始序列

多谢各位

编辑:

c) 我理解您文章的方式是,查询提供程序可能包含有关描述表的信息,或者至少包含描述初始查询需要检索的特定DB行的信息。但我并没有将您的回答解释为查询提供程序可能还包含此初始查询所需的实际元素(
someQuery
,在我们的示例中)

d) 无论如何,我假设即使查询提供程序维护实际的元素,它也只能为初始查询维护它们?因此,如果我们在初始查询中将Linq应用于实体或Linq应用于Sql操作符,我假设提供者必须查询数据库。同样地,如果我的假设是正确的,那么对b)的回答将是即使查询确实包含实际元素,当我们在
someQuery
上调用
Where
someQuery.Where
)时,查询提供者必须从数据库中检索结果,即使此查询提供程序已包含
someQuery
的所有元素,您也会这样做吗

e) 我只是开始学习Linq到实体,所以我的问题可能太笼统了,但EF如何处理所有这些?换句话说,某些EF API(例如
ObjectContext
)返回的
ObjectSet
何时包含实际元素,何时(如果有)只包含从某些数据源(例如DB)检索元素的逻辑

f) 此外,即使
ObjectSet
(由say
ObjectSet
返回)确实包含实际元素,我假设如果我们在其上应用Where运算符(
ObjectSet.Where
),查询提供程序将始终必须从数据库中检索结果?

a)您通常不会自己创建
查询,查询提供程序会这样做。它可以选择包含它想要的任何信息。不过,它很可能只包含与之关联的表的相关信息

b) 这完全取决于查询提供者。正如您在另一个问题中所看到的,查询提供程序可能最终会识别何时到达
查询
——这样它就可以知道在适当的情况下询问
查询

c) 查询提供程序通常不包含数据本身,但它可以这样做。这取决于供应商

d) 查询提供程序可能会注意到它在一个事务中,并且它已经在查询中执行了类似的上下文-它可能能够从缓存中回答查询。这取决于查询提供者

e、 f)不知道,我从未在愤怒中使用过实体框架


关于这个主题,几乎所有问题的答案都是“由查询提供者决定”。有关特定查询提供程序的详细信息,请阅读该提供程序的文档。这应该可以解释它何时会进行查询等。不清楚您真正想从这些问题中得到什么——但如果您正在研究一个完整的实现,那么周围有很多开源LINQ提供商。例如,您可能想看看NHibernate。

a)您通常不会自己创建一个
查询,查询提供者会这样做。它可以选择包含它想要的任何信息。不过,它很可能只包含与之关联的表的相关信息

b) 这完全取决于查询提供者。正如您在另一个问题中所看到的,查询提供程序可能最终会识别何时到达
查询
——这样它就可以知道在适当的情况下询问
查询

c) 查询提供程序通常不包含数据本身,但它可以这样做。这取决于供应商

d) 查询提供程序可能会注意到它在一个事务中,并且它已经在查询中执行了类似的上下文-它可能能够从缓存中回答查询。这取决于查询提供者

e、 f)不知道,我从未在愤怒中使用过实体框架


关于这个主题,几乎所有问题的答案都是“由查询提供者决定”。有关特定查询提供程序的详细信息,请阅读该提供程序的文档。这应该可以解释它何时会进行查询等。不清楚您真正想从这些问题中得到什么——但如果您正在研究一个完整的实现,那么周围有很多开源LINQ提供商。例如,您可能想看看NHibernate。

我对您最近的另一个问题的回答现在是否为您解答了这个问题?我对您最近的另一个问题的回答现在是否为您解答了这个问题?“不清楚您真正想从这些问题中得到什么”。嗯,我不知道如何回答这个问题,但我正在学习一些东西,“如果”突然出现在我的脑海里,我必须找到答案。那么糟糕吗?我真的很感激你的帮助time@user702769当前位置我很高兴你在学习-我不清楚我是否真的在帮助你:)“不清楚你到底想从这些问题中得到什么”。嗯,我不知道该怎么回答这个问题,但我学到了一些东西,“如果”流行音乐怎么办
public class Query<T> : IQueryable<T> ... 
{
              ... 
   public IEnumerator<T> GetEnumerator() 
   {
      return((IEnumerable<T>)this.provider.Execute(this.expression)).GetEnumerator();
   }
}

Query<string> someQuery = new Query<string>();
    string[] initialSet = { };
    var results1 = from x in initialSet
                   where ...
                   select ...;