首页 > 解决方案 > ForeignKey SetNull OnDelete

问题描述

我想知道当我删除相关行时,是否可以使用复合外键将此外键的一列设置为空。

实际上,第二列(我不想为空的那一列)用于我不想被停用的其他外键。

精度:我使用实体框架核心(最新版本)。

标签: sql-serverentity-framework-core

解决方案


据我所知,这是不可能的,因为您的外键值将引用不存在的记录。但是,您可以使用一些解决方法:

另一列

您可能会创建具有相同值的另一列,并且旧列将仅引用您打算删除的表,其他表的外键将链接到具有相同值的新列

没有为此表定义外键

您可以避免为可能删除记录的表定义外键,这样就不会影响您。

关闭外键检查

这将“解决”您的问题,但应尽可能避免。

虚拟移除

在目标表中,您可以创建一个已删除标志并将其设置为 true 而不是实际删除。


推荐阅读