如何在ef核心中定义三向关系

时间:2019-07-01 06:22:06

标签: c# entity-framework-core

我有3个表:用户,组织,角色。如何首先使用ef核心代码定义它们之间的关系?例如,用户可以是多个组织的总裁。

编辑:对于那些还不够明显的问题:我了解O2M和M2M方法,但是在这种情况下,我想确保特定用户及其角色仅适用于特定组织。因此,例如,User1可以是Org1,Org2的总裁,但可以是Org3的看门人,而在Org4中没有任何角色。

1 个答案:

答案 0 :(得分:0)

考虑以下是用户,组织和角色的模型

public class User {
    public int Id { get; set; }
    // Other properties
}

public class Organization {
    public int Id { get; set; }
    // Other properties
}

public class Role {
    public int Id { get; set; }
    // Other properties
}

如果情况是这样的(组织中的用户最多只能在该组织中扮演一个角色),则可以通过创建一个新模型来关联这三个模型。

public UserOrganizationRole {
    public int Id { get; set; }

    // Other properties if you want

    public int UserId { get; set; }
    public int OrganizationId { get; set; }
    public int RoleId { get; set; }

    public User User { get; set; }
    public Organization Organization { get; set; }
    public Role Role { get; set; }
}

或创建2个模型,一个模型将用户和组织关联为M2M,即UserOrganizations,另一个模型将UserOrganizations和Roles关联为M2M

public UserOrganization {
    public int Id { get; set; }

    // Other properties if you want

    public int UserId { get; set; }
    public int OrganizationId { get; set; }

    public User User { get; set; }
    public Organization Organization { get; set; }
}

public UserOrganizationRole {
    public int Id { get; set; }

    // Other properties if you want

    public int UserOrganizationId { get; set; }
    public int RoleId { get; set; }

    public UserOrganization UserOrganization { get; set; }
    public Role Role { get; set; }
}