Javascript BreezeJS-如何从其父级删除导航属性?

Javascript BreezeJS-如何从其父级删除导航属性?,javascript,entity-framework,breeze,Javascript,Entity Framework,Breeze,假设我们有一个“父”实体“客户”,一个子实体“订单”,并且我们处于子实体的上下文中,我如何在不删除订单的情况下从客户“分离”订单?基本上,我在SQL中要做的是: update Order set CustomerId = NULL; 我的删除命令函数如下所示: function remove(order) { // I've tried the following - // order.CustomerId(null); // order.Customer(null); //

假设我们有一个“父”实体“客户”,一个子实体“订单”,并且我们处于子实体的上下文中,我如何在不删除订单的情况下从客户“分离”订单?基本上,我在SQL中要做的是:

update Order set CustomerId = NULL;
我的删除命令函数如下所示:

function remove(order) {
  // I've tried the following -
  // order.CustomerId(null);
  // order.Customer(null);
  // order.Customer.remove(order);
}

根据您使用的是标量导航属性还是非标量导航属性,有几种方法。一般来说,你可以从任何一方“切断”关系

来自“子”或从属方(如果是1-1关系,则来自父方)

1) 将标量导航属性直接设置为null(如果可以为null)

2) 将外键设置为null

 child.parentID = null;  
3) 从“父级”或“主级”(如果是非标量的),并且如果您处理的是非标量导航属性,即类似于parent.children的属性,则可以通过“splice”将子级从“children”数组中删除

 var ix = parent.children.indexOf(child);
 parent.children.splice(ix, 1);
在每种情况下,Breeze都会意识到变化,并在关系的另一端执行反向操作


我希望这是有意义的。

但导航属性是否仍会标记为已加载?如何从实体中删除导航属性,并确保应用程序中的其他组件调用entity.loadNavigationProperty(“名称”)时导航属性实际再次加载(即删除导航属性并将其状态恢复为“已卸载”)
 var ix = parent.children.indexOf(child);
 parent.children.splice(ix, 1);