如果引用列'Y'是标识列,则无法创建级联外键'X'



>我正在尝试将 OwnedType 示例升级到 EF Core 3.0 预览版 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 重大更改列表中有一些我需要遵循的内容?

  • 您可以删除od.ToTable("OrderDetails");以将OrderDetails映射到与DetailedOrder相同的表
  • 您可以添加od.Property("OrderId").ValueGeneratedNever();以禁用将OrderId列标记为标识

最新更新