实体框架-将外键映射到业务键而不是主键

时间:2019-03-22 00:02:03

标签: .net entity-framework-6 ef-fluent-api

我有两个具有父/子关系的表,例如:

public class Business
    {
        public int Id { get; set; } //pk
        public int ABN { get; set; } //Business Key
        public virtual ICollection<Contract> Contracts { get; set; }
    }

public class Contract
    {
       public int Id { get; set; } //PK
       public virtual Business Business { get; set; }
       public int ABN { get; set; } //FK
    }

我想在业务键而不是主键上将关系从子级映射到父级。我以为FluentAPI中的以下内容可能会解决问题,但我不知道如何映射到BK而不是PK。

 modelBuilder.Entity<Contract>()
                .HasRequired(l => l.Business)
                .WithMany(f => f.Contracts)
                .HasForeignKey(l => l.ABN)

我想念什么吗?

1 个答案:

答案 0 :(得分:0)

在进一步研究中,使用HasPrincipalKey()功能可实现此目的。例如:

 modelBuilder.Entity<Contract>()
                .HasRequired(l => l.Business)
                .WithMany(f => f.Contracts)
                .HasForeignKey(l => l.ABN)
                .HasPrincipalKey(b => b.ABN)

但是令人失望的是,它仅在EntityFramework Core中可用,而在EntityFramework 6.2中不可用。