[英]How can I query an EF6 collection property within a LINQ Where clause?
我正在尝试使用以下查询从数据库中提取组模型:
var group = await _context.Groups
.Where(g => g.ID == dto.GroupID && g.Users.Contains(user))
.FirstOrDefaultAsync();
dto
是通过Web API发送的请求DTO, user
是ASP.NET IdentityUser。
由于Entity Framework无法将用户转换为常量,因此将引发异常。 有什么办法可以实现这个查询?
我在以下代码中有另一种选择:
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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.