我目前正在尝试限制哪些用户可以访问哪些组,并且正在使用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);
Run Code Online (Sandbox Code Playgroud) 根据数据库中的当前内容,会发生两件事.
如果表buildingDefine不为空,则将此表传递给构造函数.
否则将buildingDefine传递给构造函数.
这是我对数据库的检查:
//Is there content in buildingDefineTable?
if (!_bDefine.Any())
{
int currentBuildingId = ((BuildingTable)((ListView)sender).SelectedItem).Id;
var currentBool = from bla in _building
where bla.Id == currentBuildingId
select bla.BuildingBool;
//Is the buildingBool false?
if (!currentBool.First())
{
var currentBuildingDefine = from BuildingDefineTable in _bDefine
where BuildingDefineTable.buildingId == ((BuildingTable)((ListView)sender).SelectedItem).Id
select BuildingDefineTable;
await Navigation.PushAsync(new DefineBuilding(currentBuildingDefine));
}
else
{
//Do something here.
}
}
//No content in buildingDefineTable
else
{
await Navigation.PushAsync(new DefineBuilding(new IEnumerable<_bDefine> bDefineTable ));
}
Run Code Online (Sandbox Code Playgroud)
if语句工作正常,但是每当数据库不包含表中的任何信息时,我都无法传递表的空列表.
这是我的构造函数:
public DefineBuilding(IEnumerable<BuildingDefineTable> bDefineTable)
{
if …Run Code Online (Sandbox Code Playgroud)