Ef core генерирует неверный внешний ключ с разбиением таблицы - PullRequest
0 голосов
/ 26 июня 2019

У меня есть две сущности с разбиением таблицы - Order и OrderDetail (какая часть Order), CompositeOrder и CompositeOrderDetail (какая часть CompositeOrder).Также OrderDetail должен содержать ссылку на CompositeOrderDetail, а CompositeOrder должен содержать коллекцию сущностей Order.Я попытался настроить эти отношения, но структура сущности использует CompositeOrderId1 вместо CompositeOrderId в OrderDetail в качестве внешнего ключа.Как мне настроить Entites для решения этой проблемы?

public class OrderDetail
{
    public Guid Id { get; set; }

    public CompositeOrderDetail CompositeOrder { get; set; }
}

public class Order : OrderDetail
{
    ...
}

public class CompositeOrder
{
    public Guid Id { get; set; }

    public CompositeOrderDetail Detail { get; set; }

    public ICollection<Order> Orders { get; set; }
}

public class CompositeOrderDetail
{
    public Guid Id { get; set; }
}


   public void Configure(EntityTypeBuilder<CompositeOrder> builder)
    {
        builder.ToTable("CompositeOrder");
        builder.HasMany(co => co.Orders)
            .WithOne()
            .HasForeignKey("CompositeOrderId")
            .IsRequired();
        builder.HasOne(m => m.Detail)
            .WithOne()
            .HasForeignKey<CompositeOrderDetail>(m => m.Id);
    }

    public void Configure(EntityTypeBuilder<OrderDetail> builder)
    {
        builder.ToTable("Order")
            .HasOne<Order>()
            .WithOne()
            .HasForeignKey<OrderDetail>(o => o.Id);
       builder.HasOne(o => o.CompositeOrder)
            .WithMany()
            .HasForeignKey("CompositeOrderId");
    }

    public void Configure(EntityTypeBuilder<Order> builder)
    {
        builder.ToTable("Order")
            .HasBaseType((string)null);
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...