假设我们有一个“父”实体“客户”,子实体“订单”,并且我们处于子实体的上下文中,我如何在不删除订单的情况下从客户“分离”订单?基本上我在SQL中会做的是:
update Order set CustomerId = NULL;
我的删除命令功能如下所示:
function remove(order) {
// I've tried the following -
// order.CustomerId(null);
// order.Customer(null);
// order.Customer.remove(order);
}
答案 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都知道这种变化并在关系的另一端执行逆操作。
我希望这是有道理的。