对于可选关系(当外键可以接受 Null
时),自 EF Core 2.0 以来引入了一个新的 ClientSetNull
行为,作为 默认 0x251819212132351351351351351 的默认行为 0x25181921213234
这对于被跟踪实体具有 DeleteBehavior.ClientSetNull
语义,对于未加载到内存中的数据库记录具有 SetNull
(无操作)行为。
Microsoft docs 说:
但我认为,当关联的父实体被删除(db 中的每个地方)时,将依赖实体的 FK 设置为 Null 通常是正常的。而且,如上所述的那些“其他限制,这在实践中经常使这个选项不切实际......”是什么?
最佳答案
据我所知,文档所指的其他限制是循环或多路径级联。
例如,如果 MS Sql Server 不允许级联(删除和设置为空)
您甚至无法创建约束。
EF 核心可以通过 ClientSetNull 规避此限制。 EF 处理 set null 操作,但只有在所有受影响的实体都加载到内存中时才能这样做。
关于entity-framework-core - EF Core - 为什么 ClientSetNull 是可选关系的默认 OnDelete 行为(而不是 SetNull),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54326165/