BreezeJS - 如何从父项中删除导航属性?

时间:2013-07-24 14:44:13

标签: javascript entity-framework breeze

假设我们有一个“父”实体“客户”,子实体“订单”,并且我们处于子实体的上下文中,我如何在不删除订单的情况下从客户“分离”订单?基本上我在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 个答案:

答案 0 :(得分:1)

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

来自'孩子'或从属方(或如果是1-1关系的父母)。

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

 child.parent = null;

2)将外键设置为空

 child.parentID = null;  

3)从'父级'或主要方(如果是非标量)并且如果您正在处理非标量导航属性,例如parent.children,那么您可以通过'splice从'children'数组中删除子项”。

 var ix = parent.children.indexOf(child);
 parent.children.splice(ix, 1);

在每一种情况下,Breeze都知道这种变化并在关系的另一端执行逆操作。

我希望这是有道理的。