Как сопоставить Child с Parent Entity, используя внешний ключ, а не Id - PullRequest
0 голосов
/ 25 апреля 2019

Я пытаюсь определить родителя с базовой дочерней сущностью 'lookup', но без использования идентификаторов за пределами самой базы данных.Это позволит значительно упростить обработку в других слоях.Я использую EF core 2.2.

В настоящее время у меня есть следующее ...

public class Parent
{
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int id;
  public int childId;

  [ForeignKey("ChildId")]
  public Child Child { get; private set; }
}

public class Child
{
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int id {get; protected set; }
  public string code { get; private set; }
  public string description { get; private set; }
}

в контексте, который у меня есть;

modelBuilder.Entity<Child>()
                .HasIndex(ch => ch.Code).IsUnique();

Это означает, что при загрузкеродительская сущность, которой я вернул дочерний идентификатор, и если я хочу изменить дочерний элемент на родителе, мне нужно обновить идентификатор.

Что я хотел бы сделать, это иметь Child.code в родительской сущности ине Id, но храните внешний ключ Child Id в базе данных.

т.е.

public Parent
{
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int id { get; protected set; }
  public string childCode { get; private set; }
}

public Child
{
  [Key]
  [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
  public int id { get; protected set; }
  public string code { get; private set; }
  public string description { get; private set; }
}

Возможно ли это с помощью сопоставлений ядра ef?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...