【发布时间】:2020-11-05 15:16:30
【问题描述】:
我在 EF Core 3.1.2 中使用代码优先
我在我的 DbContext 的 OnModelCreating 方法中建立了如下的双向一对一关系。
modelBuilder.Entity<Inspection>()
.HasOne<Defect>(i => i.SpecialDefect)
.WithOne(d => d.SpecialInspection);
这会在数据库中创建外键约束。 我希望这些约束不被强制执行。 即我希望将“强制外键约束”选项设置为“否”。默认情况下,这设置为是。
这可能吗?如果是这样,我该怎么做?
【问题讨论】:
-
你为什么要这个?是出于性能原因吗?或者 FK 是否阻止您在没有
SpecialDefect的情况下添加Inspection?第二个问题的答案是不禁用FK。在 SQL 中,实现Inspection<->SpecialDefect关系的方法是将单个InspectionId属性添加到SpecialDefect。 -
您找到解决方案了吗?就我而言,我有一个外键值,我不想在删除父记录时丢失它。此外,我希望能够通过 NOT PK 导航到父表。
-
在我的例子中,我最终通过改变关系在我的模型中实现的方式来解决这个问题。不过,了解如何配置 EF Core 以设置其中一些专用选项会很有趣。
标签: entity-framework .net-core ef-code-first ef-core-3.1 ef-code-first-mapping