为什么我的 ICollection 不会通过我在 MVC 中的导航属性填充?

问题描述

我的数据库一个 MVC 项目中有 3 个主表:

用户

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 (将#修改为@)