我目前正在尝试限制哪些用户可以访问哪些组,并通过使用 linq 来做到这一点。当我将相关组添加到视图时,出现了我的问题。
我不断收到的错误是:
LINQ to Entities 无法识别方法“System.String”
GetUserId(System.Security.Principal.IIdentity)' 方法,以及这个
方法无法转换为存储表达式
这是我的代码:
var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == User.Identity.GetUserId()).Select(gr => gr.GroupId);
pv.GroupList = db.Groups.Where(g => groupUser.Contains(g.Id)).ToList();
return View(pv);
你需要打电话GetUserId()
在 lambda 表达式之外,因为 Linq to Entities 无法将其转换为相应的 SQL(当然,没有 SQL 替代方案)GetUserId()
):
var userId = User.Identity.GetUserId();
var groupUser = db.GroupUsers.Where(u => u.ApplicationUserId == userId)
.Select(gr => gr.GroupId);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)