相关疑难解决方法(0)

DELETE语句与实体框架的SAME TABLE REFERENCE约束冲突

我有一个带有自引用的表,其中ParentId是ID(PK)的FK.
使用EF(代码优先),我建立了如下关系:

this.HasOptional(t => t.ParentValue)
    .WithMany(t => t.ChildValues)
    .HasForeignKey(t => t.ParentId);
Run Code Online (Sandbox Code Playgroud)

当我尝试删除子节点及其父节点时,DELETE命令对数据库的EF问题不按我预期的顺序 - 它首先尝试删除父节点.

我意识到我在这里有几个选项(我都不喜欢):

  1. 首先删除子记录,执行完整保存/提交,然后删除父记录.由于我的模型的复杂性和维护它的逻辑,这不是一个选项 - 不能随时发出多个提交命令.
  2. 在删除任何内容之前解散关系.这似乎是一个更明智的解决方案,但同样,我必须在DELETE之前使用UPDATE语句发出单独的提交.我想避免多次保存/提交调用.
  3. 在删除父记录之前使用触发器删除子项.但我想尽可能避免触发器及其有问题的性质.

所以问题是..有没有办法在父记录之前强制删除子项?也许我错过了某种明确的方式告诉EF它需要在父母之前照顾这些孩子?也许有一种方法可以指示EF按ID的降序删除?我不知道......想法?

.net c# sql-server entity-framework fluent-interface

15
推荐指数
2
解决办法
2万
查看次数