Вопрос об отношениях один-ко-многим с точно такими же отношениями - PullRequest
0 голосов
/ 18 января 2020

Посмотрите эти модели:

class Esquema
{
    public Cabecalho Cabecalho { get; set;}
    public Rodape Rodape { get; set;}
}

abstract class Segmento
{
    //...some props
    public Esquema Esquema { get; set;}
}

class Cabecalho : Segmento
{
}

class Rodape : Segmento
{
}

Использование EF Core для сопоставления этих моделей:

public class EsquemaConfig : IEntityTypeConfiguration<Esquema>
{
     public void Configure(EntityTypeBuilder<Esquema> builder)
     {
         builder.ToTable(nameof(Esquema));
         builder.HasOne(x => x.Cabecalho).WithOne(x => x.Esquema);
         builder.HasOne(x => x.Rodape).WithOne(x => x.Esquema);
     }
}

public class SegmentoConfig : IEntityTypeConfiguration<Segmento>
{
     public void Configure(EntityTypeBuilder<Segmento> builder)
     {
         builder.ToTable(nameof(Segmento));
         //...map others props
     }
}

public class CabecalhoConfig : IEntityTypeConfiguration<Cabecalho>
{
     public void Configure(EntityTypeBuilder<Cabecalho> builder)
     {
         builder.ToTable(nameof(Segmento));
         builder.HasOne(x => x.Esquema).WithOne(x => x.Cabecalho);
     }
}

public class RodapeConfig : IEntityTypeConfiguration<Rodape>
{
     public void Configure(EntityTypeBuilder<Rodape> builder)
     {
         builder.ToTable(nameof(Segmento));
         builder.HasOne(x => x.Esquema).WithOne(x => x.Rodape);
     }
}

Когда я выполняю приложение, возникает исключение:

Дочерняя / зависимая сторона не может быть определена для отношений «один к одному» между «Esquema.Cabecalho» и «Cabecalho.Esquema». Чтобы определить дочернюю / зависимую сторону отношения, настройте свойство внешнего ключа. Если эти переходы не должны быть частью одного и того же отношения, настройте их без указания обратного. Подробнее см. http://go.microsoft.com/fwlink/?LinkId=724062.

...