我不确定我在标题中使用了正确的术语,但这是我需要做的......
我有一个UserJobs表,它在列EMPNO和EMPJOBNO上有一个复合主键。 我有另一个表UserJobAccounts,它在EMPNO,EMPJOBNO和JOBACCOUNTNO上有一个复合主键
我是否可以使用此架构将一个UserJob正确映射到多个UserJobAccounts?
答案 0 :(得分:2)
是的,这是可能的。模型草图和带数据注释的映射如下所示:
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 });