2013-07-24 28 views
2

假设我们有一个“父”实体“客户”,子实体“订单”,而我们在子实体的背景下,如何将我从客户“分离”的顺序,但不删除订单?基本上我会做什么在SQL是:BreezeJS - 如何将其从母公司的导航性能?

update Order set CustomerId = NULL; 

我remove命令功能看起来是这样的:这取决于你是否有一个标量或非标量导航属性工作

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

回答

1

的几种方法。在一般情况下,你可以“切断”来自任何一方的关系。

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

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

child.parent = null; 

2),设置外键为null

child.parentID = null; 

3)从 '父' 或主要侧(如果非标量),如果你正在处理一个非标量导航属性,即像parent.children,那么你可以从“孩子”阵列通过“拼接”去掉了孩子。

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

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

我希望这是有道理的。

+0

那不是导航属性仍然​​如同装标?一个人怎么能由一个实体中删除的导航性能,并确保如果应用一些其他组件调用entity.loadNavigationProperty的导航属性实际上被再次装入(“名”)(即除去导航属性,恢复其状态设置为“卸载“) – pQuestions123