2

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

update Order set CustomerId = NULL;

我的删除命令函数如下所示:

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

1 回答 1

1

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

从“孩子”或从属方面(如果是 1-1 关系,则为父母)。

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

 child.parent = null;

2)设置外键为null

 child.parentID = null;  

3) 从“父”或主体(如果是非标量),如果您正在处理非标量导航属性,例如 parent.children,那么您可以通过“拼接”从“子”数组中删除子。

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

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

我希望这是有道理的。

于 2013-07-24T16:34:56.623 回答