您好,我在使用微风js时遇到级联删除问题,顺便说一句,我认为它很摇滚。具体来说,我使用带有 AngularJS 和 BreezeJS(1.3.1 版本)的 Asp.net Mvc SPA 模板。我有一个具有电话对象导航属性的客户对象。电话对客户的 FK 设置为 NotNull 和 Cascade Delete。
我的问题是当试图删除客户端上的父客户并调用 SaveChanges (这是一个 Web Api 方法)时,我在 SqlServer 上得到一个 DbUpdateException “更新语句与前键约束冲突......”。
尽管我没有明确编辑电话,但我看到微风客户端发回标记为已删除的客户对象和标记为已修改的电话对象。
显然,将 Phone 上的 FK 设置为可为空时,我也不例外,父 Customer 对象被删除但 Phone 对象没有被删除,而是其对 Customer 的 FK 设置为 null。
我也希望删除 Phone 对象,但将 FK 列保持为 notnull。我将不胜感激任何帮助。
编辑更新:
那么问题是我猜当你在客户端上调用 EntityManager.saveChanges() 时。如果您删除 Customer 父对象,它的 entityState 将设置为已删除,并且所有 FK 引用都设置为 null,就像在 Phone 对象中一样,该对象现在具有 EnityState “Modified”。但是对 EntityManager.saveChanges() 的调用将导致服务器中的更新和删除,从而导致冲突是电话上的 FK 设置为“非空”。调用 EntityManager.saveChanges([Customer]) 可能有效。
#
谢谢你。