微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决为什么我的 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 举报,一经查实,本站将立刻删除。