无法在引用列 'Y' 是标识列的情况下创建级联外键 'X'

cascading foreign key 'X' cannot be created where the referencing column 'Y' is an identity column

我正在尝试将 OwnedTypes sample 升级到 EF Core 3.0 Preview 8 但是当我 运行 项目时它无法创建数据库。

当调用 Microsoft.EntityFrameworkCore.Infrastructure.DatabaseFacade.EnsureCreated() 时抛出以下异常:

Microsoft.Data.SqlClient.SqlException: 'Cascading foreign key 'FK_OrderDetails_DetailedOrders_OrderId' cannot be created where the referencing column 'OrderDetails.OrderId' is an identity column. Could not create constraint or index. See previous errors.'

之前有哪些错误?

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
}

Full project

我想我需要遵循 3.0 breaking changes 列表中的某些内容?

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