我有一个不寻常的问题,即如果我对IQueryable进行单独的调用,则创建IQueryable的初始调用将生成特定于第一个调用的SQL。这可以在调试和观察内部查询时看到。
当我进行内联调用时,例如:
IQueryable<TableEntity> tEnt = dbCtx.table.AsNoTracking().Include(t=> t.someRefData).Where(t => t.Id >= 10);
这会产生正确的内部SQL查询。
但是,如果我通过单独的不同调用动态进行查询,例如:
IQueryable<TableEntity> tEnt = dbCtx.table.AsNoTracking();
tEnt.Include(t=> t.someRefData);
tEnt.Where(t => t.Id >= 10);
内部SQL查询不会在tEnt声明之后更新以反映这些先前的调用。
我是否完全误解了IQueryable的工作原理?
答案 0 :(得分:1)
tEnt = tEnt.Include(t=> t.someRefData);