问题描述
Id
Name
PositionsRoles
职位
Id
PositionName
UsersRoles
角色
Id
RoleName
PositionRoles 和 UsersRoles 字段是用于访问与职位关联的角色和与用户关联的角色的导航属性。这是通过两个带有外键的附加表完成的:
职位角色
PosId
RoleId
用户角色
UserId
RoleId
当我尝试此代码时出现问题:
Positions position = db.Positions.Find(posid);
Users user = db.Users.Find(userid);
var positionRoles = new HashSet<int>(position.PositionsRoles.Select(c => c.Id));
var userRoles = new HashSet<int>(user.UsersRoles.Select(c => c.Id));
无论出于何种原因,我的 positionRoles 变量在数据库中获取角色的 ICollection 都没有问题。但是 userRoles 将始终返回 0 个结果。令人难以置信的是,为什么这会发生在我身上。
我创建的 UsersRoles 表与我的 PositionsRoles 表完全相同。我从字面上拿了 PositionsRoles 表后面的代码,并用“角色”和“角色”替换了“职位”和“职位”这两个词。我查看了模型中 Roles 和 Positions 的代码,它们是相同的:
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Roles> PositionsRoles { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage","CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection<Roles> UsersRoles { get; set; }
好像另一个用户也遇到了类似的问题,没有解决办法:Why Does my Navigation ICollection<T> Property holds 0 Items
我可能遗漏了什么???
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)