如何在LINQ Where子句中查询EF6集合属性
本文关键字:查询 EF6 集合 属性 子句 LINQ Where | 更新日期: 2023-09-27 18:00:53
我正试图使用以下查询从数据库中提取组模型:
var group = await _context.Groups
.Where(g => g.ID == dto.GroupID && g.Users.Contains(user))
.FirstOrDefaultAsync();
dto
是通过Web API发送的请求DTO,user
是ASP.NET标识用户。
这引发了一个异常,因为实体框架无法将用户转换为常量。有什么方法可以实现这个查询吗?
我在以下代码中有一个替代方案:
var reportingGroup = user.Groups
.FirstOrDefault(rg => dto.GroupID == rg.ID);
但我希望避免对用户的延迟加载的Groups集合进行同步查找。
更正确的做法是通过Id
而不是通过整个User
对象来匹配用户。所以考虑改变
g.Users.Contains(user)
至
g.Users.Any(u=>u.Id==user.Id)