【问题标题】:How to make Entity Framework Core create a foreign key constraint that is not enforced如何使 Entity Framework Core 创建未强制执行的外键约束
【发布时间】: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&lt;-&gt;SpecialDefect 关系的方法是将单个InspectionId 属性添加到SpecialDefect
  • 您找到解决方案了吗?就我而言,我有一个外键值,我不想在删除父记录时丢失它。此外,我希望能够通过 NOT PK 导航到父表。
  • 在我的例子中,我最终通过改变关系在我的模型中实现的方式来解决这个问题。不过,了解如何配置 EF Core 以设置其中一些专用选项会很有趣。

标签: entity-framework .net-core ef-code-first ef-core-3.1 ef-code-first-mapping


【解决方案1】:

如果您需要在“DefectId”列中添加具有 NULL 值的行,您可以轻松地将其定义为相应类中的 NULLABLE。

public int? DefectId {get;set;}

【讨论】:

    猜你喜欢
    • 2018-09-28
    • 2017-09-07
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 2019-04-19
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多