Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 即使在消除级联属性之后,EF Core也不会删除条目_C#_Sql Server_Entity Framework Core - Fatal编程技术网

C# 即使在消除级联属性之后,EF Core也不会删除条目

C# 即使在消除级联属性之后,EF Core也不会删除条目,c#,sql-server,entity-framework-core,C#,Sql Server,Entity Framework Core,让我的数据库更简单一点,我有律师,我有案件,我有案件参与,令人惊讶的是,有两个外键 现在,在我的API中,律师的delete方法首先查找引用它的所有案例参与,删除它们,执行_context.SaveChanges(),然后尝试删除律师本身 问题就在这里。这是行不通的 我在blazor中构建的网站中实现了这个api,每当我试图删除律师时,它只会删除其参与的案件,但就到此为止。如果我重新构建并重新运行应用程序,现在律师没有案件参与,当我尝试删除它时,它会起作用 我已经调试过了,这似乎是一个Sql S

让我的数据库更简单一点,我有律师,我有案件,我有案件参与,令人惊讶的是,有两个外键

现在,在我的API中,律师的delete方法首先查找引用它的所有案例参与,删除它们,执行_context.SaveChanges(),然后尝试删除律师本身

问题就在这里。这是行不通的

我在blazor中构建的网站中实现了这个api,每当我试图删除律师时,它只会删除其参与的案件,但就到此为止。如果我重新构建并重新运行应用程序,现在律师没有案件参与,当我尝试删除它时,它会起作用

我已经调试过了,这似乎是一个Sql Server问题,它发生在行_context.Attorneys.Remove(att)上,它基本上说它不会删除律师,因为它仍然有依赖于它的案件参与,我没有将其设置为级联删除

但这不应该发生。参与者已被删除

我尝试的修复方法是假装律师条目没有更新,并且在其属性中仍然有2个案例参与,这在数据库中实际上不存在,因此我尝试在删除参与后但在删除之前更新律师,将其Case Participations属性设置为新的空案例参与集合,执行_context.SaveChanges,并从context att=_context.Find(id)重新对律师进行编码。仍然没有什么,将引发相同的异常


我是否做错了什么,或者这是EF Core 3.1中的一个问题?

能否显示删除参与者和律师的代码?EF Core和SaveChanges均未损坏。如果不查看代码
删除它们,执行_context.SaveChanges(),然后尝试删除律师本身,我们就无法猜出代码出了什么问题。
这是一个错误。EF Core与大多数功能齐全的ORM一样,缓存更改并在调用
SaveChanges
时执行所有更改。不需要单独的
Delete
方法。听起来您试图实现“通用”存储库反模式,但遇到了问题
CaseParticipations
听起来像是为了实现多对多关系而创建的类。如果希望在删除案件或律师时自动删除其记录,则需要在数据库和实体中进行配置。请提供这些表的DbContext关系。