使用 Entity Framework Cascade 和 ClientCascade 有什么区别?

Using Entity Framework what is the difference between Cascade and ClientCascade?

我正在学习 C# 以及如何使用 Entity Framework。我相信我知道什么是 Cascade、Restrict、NoAction 和 SetNull 行为。

但是还有其他的前缀为Client的行为:

我想了解它们之间的区别,什么时候应该使用 ClientCascade 而不是 Cascade 或 ClientNoAction 而不是 NoAction。

简短的回答是——当 dependent/ref. entities 在内存中是 loaded/cached 时,cascade delete 对主要实体的操作 fails - 因为 CYCLIC ref. LOCK .

ClientCascade 允许 DBContext 删除实体,即使存在 CYCLIC ref. LOCK