Нельзя создать каскадный внешний ключ "X", если ссылочный столбец "Y" является столбцом идентификаторов.
Я пытаюсь обновить образец OwnedTypes до EF Core 3.0 Preview 8, но когда я запускаю проект, он не может создать базу данных.
когда Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated()
Вызывается следующее исключение:
Microsoft.Data.SqlClient.SqlException: 'Каскадный внешний ключ'FK_OrderDetails_DetailedOrders_OrderId'не может быть создан, когда ссылочный столбец'OrderDetails.OrderId'является столбцом идентификаторов. Не удалось создать ограничение или индекс. Смотрите предыдущие ошибки.
Какие предыдущие ошибки?
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
#region OwnsOneNested
modelBuilder.Entity<DetailedOrder>().OwnsOne(p => p.OrderDetails, od =>
{
od.OwnsOne(c => c.BillingAddress);
od.OwnsOne(c => c.ShippingAddress);
});
#endregion
#region OwnsOneTable
modelBuilder.Entity<DetailedOrder>().OwnsOne(p => p.OrderDetails, od =>
{
od.OwnsOne(c => c.BillingAddress);
od.OwnsOne(c => c.ShippingAddress, sa =>
{
sa.Ignore(p => p.IgnoreMe);
});
od.ToTable("OrderDetails");
});
#endregion
}
Я предполагаю, что есть что-то в списке критических изменений 3.0, которым я должен следовать?
1 ответ
Решение
- Вы можете удалить
od.ToTable("OrderDetails");
на картуOrderDetails
к той же таблице, что иDetailedOrder
- Можете добавить
od.Property("OrderId").ValueGeneratedNever();
отключить маркировкуOrderId
колонка как личность