我有更多的理论问题。我有三个型号。员工,委员会和职位。目前我创建了一个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方法。
答案 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。