查询出来A中CreatedByUser=null,而B中则有值,为什么我并没有查询g=>CreatedByUser,B中给查询出来了,望大婶解答
你A是怎么看没值的?
调试啊
而且我并没有查CreatedByUser,按理说不应该有值
@yy_yang: EF中,有个级联查询。只要实体中有这样的关系,那么是会有结果的。比较疑惑你没有值的情况。
@幻天芒: private IQueryable<T> CreatePathQuery<T>(DbSet<T> dbSet, params Expression<Func<T, object>>[] path) where T : class
{
IQueryable<T> dbQuery = dbSet.Include(path[0]);
for (int i = 1; i < path.Length; i++)
{
dbQuery = dbQuery.Include(path[i]);
}
return dbQuery;
}
@yy_yang: Include的意思表示直接查询,不代表就干掉了级联查询哇。
@幻天芒: 哦,那就奇怪了,依你所说,就不应该出现没有值得情况咯
这是调试A的结果,为null
@yy_yang: 看看A这种情况下,path是个什么玩意?延迟加载指的是有级联关系,那么用到了内部的对象就会触发数据查询。
@yy_yang: 建议简化示例,测试一下。防止其他地方代码影响。
@幻天芒: 恩,谢谢你的建议
这个设置为false就有有值了。
试了下,没有变化,结果依旧同上
我需要的结果是CreatedByUser=null
经过测试
SelectList<Group>(g => g.IsActive && g.IsAcquisitionGroup, g => g.Users).ToList();
改为SelectList<Group>(g => g.IsActive && g.IsAcquisitionGroup).ToList();
此时CreatedByUser=null