ManyToMany数据库有三个模型

时间:2017-08-02 12:22:27

标签: c#

我有更多的理论问题。我有三个型号。员工,委员会和职位。目前我创建了一个ManyToMany关系数据库EmployeeCommission(一个Employee有许多佣金和佣金有很多员工),但我还需要在关系中添加Position,这将使得Commissions有许多可以拥有多个职位的员工等等。 (同一员工可以在不同的佣金中拥有不同的职位)。

我该如何解决这个问题?我知道ManyToMany关系只能介于模型之间,那么如何在三个模型之间创建ManyToMany数据库呢? 这是我的模型,但我认为你不需要它们,但仅仅是为了获取一般信息。

public class Employee
{
  public int Id { get; set; }
  public string Name { get; set; }
  public string Surname { get; set; }

  [Display(Name = "Phone Number")]
  public int PhoneNumber { get; set; }
}
public class Commission
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
}
public class Position
{
    public int Id { get; set;}
    public string Name { get; set; }
}

注意:我正在使用CodeFirst方法。

1 个答案:

答案 0 :(得分:0)

您可以查看此示例来执行此操作:

    public class User
{
    public int Id { get; set; }
    public ICollection<UserAccount> UserAccounts { get; set; }
}

public class Account
{
    public int Id { get; set; }
    public ICollection<UserAccount> UserAccounts { get; set; }
}

public class UserAccount
{
    public int UserId { get; set; }
    public int AccountId { get; set; }
    public int RoleId { get; set; }
    public User User { get; set; }
    public Account Account { get; set; }
    public Role Role { get; set; }
}

public class Role
{
    public int Id { get; set; }
    public string RoleName { get; set; }
    public ICollection<UserAccount> UserAccounts { get; set; }
}

配置:

modelBuilder.Entity<UserAccount>()
    .HasKey(e => new { e.UserId, e.AccountId });

modelBuilder.Entity<UserAccount>()
    .HasRequired(e => e.User)
    .WithMany(e => e.UserAccounts)
    .HasForeignKey(e => e.UserId);

modelBuilder.Entity<UserAccount>()
    .HasRequired(e => e.Account)
    .WithMany(e => e.UserAccounts)
    .HasForeignKey(e => e.AccountId);

modelBuilder.Entity<UserAccount>()
    .HasRequired(e => e.Role)
    .WithMany(e => e.UserAccounts)
    .HasForeignKey(e => e.RoleId);

您可以通过多种方式创建新的UserAccount。