>我正在尝试将 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
列标记为标识