我遇到了一个不寻常的问题,如果我对IQueryable进行单独调用,创建IQueryaable的初始调用将生成第一个调用特定的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的工作原理?
tEnt = tEnt.Include(t=> t.someRefData);