Как настроить множественные отношения один-к-одному в Entity Framework Core? - PullRequest
1 голос
/ 12 февраля 2020

У меня есть две сущности: Parent и Child; каждый родитель может иметь не более двух дочерних ссылок. Я настроил свои сущности следующим образом:

class Parent
{
    [Key]
    public int ParentId { get; set; }

    public int PrimaryChildId{ get; set; }
    public Child PrimaryChild { get; set; }

    public int SecondaryChildId { get; set; }
    public Child? SecondaryChild { get; set; }
    // remaining properties
}

class Child 
{
    [Key]
    public int ChildId { get; set; }

    public int ParentId { get; set; }
    public Parent Parent {get; set; }

    // remaining child properties 
}

В DbContext.OnModelCreating у меня есть этот код:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Parent>(builder =>
    {
        builder.HasOne(p => p.PrimaryChild);
        builder.HasOne(p => p.SecondaryChild);
    });
}

Этого недостаточно для выполнения sh того, что я ' Я пытаюсь достичь здесь. Я получаю сообщение об ошибке:

Невозможно определить отношение, представленное свойством навигации 'Child.Parent' типа 'Parent'. Либо настройте отношение вручную, либо игнорируйте это свойство, используя атрибут «[NotMapped]», либо используя «EntityTypeBuilder.Ignore» в «OnModelCreating»

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

Я немного искал в inte rnet , но мне не повезло найти отношения, которые установлены таким образом.

...