我一直在使用软删除,现在我想加载未“删除”的实体的导航属性。我找到了一种方法,这种方法的问题对我来说并不清晰,还有另一种方法可以做到这一点。
Context.CreateSet().Include("Salary").Select(u => new {User= u, Salary = u.Salarys.Where(s => !s.Deleted)}).AsQueryable().Select(a => a.User).AsQueryable();
预加载不支持过滤。您的代码可以简化为:
var users = Context.CreateSet<User>()
.Select(u => new {
User = u,
Salary = u.Salaries.Where(s => !s.Deleted)
})
.AsEnumerable()
.Select(a => a.User);
Include
不需要,因为您要用自己的查询替换它并且AsQueryable
不需要,因为查询是IQueryable
一直到打电话为止AsEnumerable
当选择用户和选定的工资时,它将切换到 Linq-to-Objects。 EF 将负责为您正确修复导航属性。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)