【发布时间】:2022-02-16 16:08:47
【问题描述】:
我的数据库中有以下表格:
Product ResourceAssociation
------- ------------------
Name /-------> Id
ResourceAssociation_Id ------/ SomeProperty
所以 Product 有一个 ResourceAssociation_Id,它是 ResourceAssociation 表的 FK。
这是一个遗留应用程序,它的 Entity Framework 6 映射包含这段代码:
HasOptional(t => t.ResourceAssociation).WithOptionalDependent().WillCascadeOnDelete(true);
我希望将其移植到 EF Core。看来,EF Core 不再具有 HasOptional 了。我试过这个:
builder.HasOne(t => t.ResourceAssociation)
.WithOne().HasForeignKey("ResourceAssociation_Id")
.IsRequired(false)
.OnDelete(DeleteBehavior.Cascade);
我还尝试将WithOne 替换为WithMany。但它不起作用。
当我尝试创建没有 ResourceAssociation 的新产品时(因为它不是必需的),EF Core 仍然告诉我我的 ModelState 无效,因为 ResourceAssociation 为空。
我无法在 WithOne 中指定属性(例如 WithOne(x => x.Product)),因为 ResourceAssociation 是一个也将用于其他表的表(例如 Brand 也有一个指向该表的 ResourceAssociation_Id 列)。
这种设置在 EF Core 中是否可行?或者我是否必须将不同的导航属性添加到我的 ResourceAssociation 类(即产品、品牌……)?
【问题讨论】: