无法在引用列 '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
}
我想我需要遵循 3.0 breaking changes 列表中的某些内容?
- 您可以删除
od.ToTable("OrderDetails");
以将 OrderDetails
映射到与 DetailedOrder
相同的 table
- 您可以添加
od.Property("OrderId").ValueGeneratedNever();
以禁用将 OrderId
列标记为身份
我正在尝试将 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
}
我想我需要遵循 3.0 breaking changes 列表中的某些内容?
- 您可以删除
od.ToTable("OrderDetails");
以将OrderDetails
映射到与DetailedOrder
相同的 table
- 您可以添加
od.Property("OrderId").ValueGeneratedNever();
以禁用将OrderId
列标记为身份