我有以下编译查询.
private static Func<Db, int, IQueryable<Item>> func =
CompiledQuery.Compile((Db db, int id) =>
from i in db.Items
where i.ID == id
select i
);
Run Code Online (Sandbox Code Playgroud)
当我这样做时,它立即在数据库上执行
var db = new Db()
var query = func(db, 5); // Query hits the database here
Run Code Online (Sandbox Code Playgroud)
就像在做之前一样
var result = query.SingleOrDefault(); // Happens in memory
Run Code Online (Sandbox Code Playgroud)
但是如果没有编译这个查询,就像在
var query = from i in db.Items
where i.ID == id
select i
Run Code Online (Sandbox Code Playgroud)
然后它在完成后在数据库上执行
var result = query.SingleOrDefault();
Run Code Online (Sandbox Code Playgroud)
这是预期的行为吗?
注意:这是返回IQueryable执行的编译查询何时重复?,但那里的所有答案似乎都不同意我的发现.我已经在那里发布了我的答案,但我不知道如何让人们关注它,因为它已经超过2年了.