我正在尝试使用以下查询从数据库中提取组模型:
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集合上进行同步查找。
答案 0 :(得分:2)
更正确的方法是按Id
匹配用户,而不是整个User
对象。所以考虑改变
g.Users.Contains(user)
要
g.Users.Any(u=>u.Id==user.Id)