【发布时间】:2019-06-16 23:30:49
【问题描述】:
对于可选关系(当外键可以接受 Null 时),自 EF Core 2.0 以来引入了新的 ClientSetNull 行为作为删除行为 DeleteBehavior.ClientSetNull 的 默认 选项。
这对跟踪的实体具有 SetNull 语义,对于未加载到内存中的数据库记录具有 Restrict(无操作)行为。
Microsoft docs 这么说:
如果您希望数据库也尝试将空值传播给子项 即使没有加载子实体,外键也可以使用
SetNull。但是,请注意,数据库必须支持这一点,并且 像这样配置数据库可能会导致其他限制, 这在实践中常常使这个选项不切实际。这就是为什么 SetNull 不是默认值。
但我认为当关联的父级被删除时(数据库中的每个位置),将依赖实体的 FK 设置为 Null 通常是正常的。而且,如上所述,那些“其他限制,在实践中常常使这个选项不切实际..”是什么?
【问题讨论】:
标签: entity-framework-core cascade ef-core-2.0