Entity Framework - Отображение внешнего ключа в бизнес-ключ вместо первичного ключа - PullRequest
0 голосов
/ 22 марта 2019

У меня есть две таблицы с отношениями родитель / потомок, например:

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 голосов
/ 22 марта 2019

После дальнейшего изучения способ сделать это с помощью функции 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.

...