1

我不确定我在标题中使用了正确的术语,但这是我需要做的......

我有一个表 UserJobs,它在列 EMPNO 和 EMPJOBNO 上有一个复合主键。我有另一个表 UserJobAccounts,它在 EMPNO、EMPJOBNO 和 JOBACCOUNTNO 上有一个复合主键

我能否使用此架构将一个 UserJob 正确映射到多个 UserJobAccounts?

4

1 回答 1

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 });
于 2013-07-26T23:44:09.297 回答