Entity framework 如何使用Breeze EFContextProvider从服务器中的DB中删除对象及其所有子对象?

Entity framework 如何使用Breeze EFContextProvider从服务器中的DB中删除对象及其所有子对象?,entity-framework,breeze,Entity Framework,Breeze,我知道如何在客户端执行此操作…我必须循环所有子实体并调用entityAspect.setDeleted。但是我如何在BreezeController的服务器中执行此操作?使用Breeze EFContextProvider在服务器上的等效功能是什么?最简单的选择是在SQL server数据库上设置级联删除。保存成功后,仍然需要删除客户端上的子项,但不需要在服务器上执行任何其他操作 另一种方法是在BeforeSaveEntities方法中实际获取子实体,将它们添加到保存映射,然后删除它们,并在EF

我知道如何在客户端执行此操作…我必须循环所有子实体并调用entityAspect.setDeleted。但是我如何在BreezeController的服务器中执行此操作?使用Breeze EFContextProvider在服务器上的等效功能是什么?

最简单的选择是在SQL server数据库上设置级联删除。保存成功后,仍然需要删除客户端上的子项,但不需要在服务器上执行任何其他操作


另一种方法是在BeforeSaveEntities方法中实际获取子实体,将它们添加到保存映射,然后删除它们,并在EF中将它们标记为已删除

根据你的第一个建议,我试过了,但没用。我记得我在某个地方读到,旧EF不支持cascase delete。上周末,我将EF从5.0升级到6.1,但仍然无法工作。当我尝试删除父实体而不将子实体标记为已删除时,出现了一个错误,如UPDATE语句与外键约束\FK_dbo.XXX_dbo.YYY冲突。但是,当我从VisualStudioDatabaseExplorer中删除父行时,级联删除工作正常。那么,我遗漏了什么吗?对于你的第二个建议,你如何将它们添加到保存映射,然后删除它们?我尝试了这种方法,但遇到了问题。第三种方法是存储过程或动态SQL,由EF使用Context.Database.ExecuteSqlCommanddeleteSql发布。您可能希望在同一事务中执行此操作。幸运的是,您可以在Breeze用于其他保存的同一事务中登记此命令。怎样我自己没做过,但我知道有人做过。也许有文件?让Jay告诉您:-。描述了如何操作原始值和创建总括事务上下文。