breezejs-如何添加新的子实体并将其附加到父母的子集合中

时间:2014-08-25 15:02:04

标签: c# knockout.js breeze one-to-many hottowel

我有一个带有数据库导航属性的模型。模型的结构如下

public class Parent{
  public string propertyone {get; set;}
  public IList<Child> children {get; set;}
}

public class Child{ 
  public string propertyone {get; set;}
  public string propertytwo {get; set;}
  public IList<Seed> children {get; set;}
}

使用breeze,我从数据库中加载一个'Parent'类型的对象,并在表中显示“children”属性。

  

this.parent = manager.fetchEntityByKey('Parent',42)

点击按钮,我想添加另一个孩子

<table data-bind="with: parent">
       <tr data-bind="foreach: children">
          <td data-bind="text: children"></td>
          <td data-bind="text: children"></td>
          <td><a data-bind="click: $root.remove">Remove</a></td>
       </tr>
 </table>
 <a data-bind="click: $root.add">Add</a>

我的无效功能看起来像这样,其中self表示返回的视图模型。

function add(parent){
  var newchild= ko.observable(entityType.createEntity(
                        {
                            propertyone : "Test"

                        }));
  parent.children.push(newchild);
  //parent().children().push(newchild);
  //self.parent.children.push(newchild);
  //self.parent().children().push(newchild);
}

这个以及add函数中的注释行是我尝试的但是不起作用。我收到错误undefined is not a function。如何向此导航集合添加项目,表示父实体和子实体之间的一对多关系?

1 个答案:

答案 0 :(得分:3)

如果您的元数据设置正确,您只需要:

entityType.createEntity({ parentIdProperty: 'parent id value' });

这将创建实体并将其添加到父实体的集合中。