我不确定我在标题中使用了正确的术语,但这是我需要做的......
我有一个表 UserJobs,它在列 EMPNO 和 EMPJOBNO 上有一个复合主键。我有另一个表 UserJobAccounts,它在 EMPNO、EMPJOBNO 和 JOBACCOUNTNO 上有一个复合主键
我能否使用此架构将一个 UserJob 正确映射到多个 UserJobAccounts?
我不确定我在标题中使用了正确的术语,但这是我需要做的......
我有一个表 UserJobs,它在列 EMPNO 和 EMPJOBNO 上有一个复合主键。我有另一个表 UserJobAccounts,它在 EMPNO、EMPJOBNO 和 JOBACCOUNTNO 上有一个复合主键
我能否使用此架构将一个 UserJob 正确映射到多个 UserJobAccounts?
是的,这是可能的。带有数据注释的模型和映射的草图如下所示:
public class UserJob
{
[Key, Column(Order = 1)]
public int EmpNo { get; set; }
[Key, Column(Order = 2)]
public int EmpJobNo { get; set; }
public ICollection<UserJobAccount> Accounts { get; set; }
}
public class UserJobAccount
{
[Key, ForeignKey("Job"), Column(Order = 1)]
public int EmpNo { get; set; }
[Key, ForeignKey("Job"), Column(Order = 2)]
public int EmpJobNo { get; set; }
[Key, Column(Order = 3)]
public int JobAccountNo { get; set; }
public UserJob Job { get; set; }
}
或者不使用数据注释和 Fluent API:
modelBuilder.Entity<UserJob>()
.HasKey(uj => new { uj.EmpNo, uj.EmpJobNo });
modelBuilder.Entity<UserJobAccount>()
.HasKey(uja => new { uja.EmpNo, uja.EmpJobNo, uja.JobAccountNo });
modelBuilder.Entity<UserJobAccount>()
.HasRequired(uja => uja.Job)
.WithMany(uj => uj.Accounts)
.HasForeignKey(uja => new { uja.EmpNo, uja.EmpJobNo });