使用BreezeJs,如何最好地创建一个新的子元素进行保存?

时间:2014-06-23 00:36:32

标签: angularjs breeze

我知道如何撤回一个实体,我是否可以对其进行更改并说它是一个"公司"与" People"在子节点中。我可以编辑这些人并保存它,一切都很好。

但是,我不能100%确定的是如何最好地创造"具有该子集合的新子对象或实体,并将其与父节点一起保存。

根据要求添加一些代码。

Html代码

<div data-ng-controller="updateTerritory as vm">
    Company Name: {{vm.company.name}} : Territory: {{vm.company.territory.name || 'New Territory'}}<br />
    <input type="text" data-ng-model="vm.company.name"/>
    <input type="text" data-ng-model="vm.company.territory.name" />
    <button data-ng-click="vm.save()">Save Territory</button>
</div>
  

路线网址:#/ company / territory / 71 / new

角度控制器

angular.module('app').controller(controllerId,
    ['$location', '$routeParams', 'common', 'datacontext', 'helper', updateTerritory]);

function updateTerritory($location, $routeParams, common, dc, helper) {
    var vm = this;

    vm.company = undefined;

    activate();

    function activate() {
        common.activateController([getRequestedCompany()], controllerId);
    }

    function getRequestedCompany() {
        var id = $routeParams.id;
        var tId = $routeParams.tId;
        //if (tId === 'new') {
            //vm.company.territory = dc.company.territory.create();
            //return vm.company;
        //}

        return dc.company.getById(id)
        .then(function (data) {
            vm.company = data;
        }, function (error) {
            logError("Unable to get company " + id);
        });
    }

    function save() {
        return dc.save()
            .then(function (saveResult) {
            }, function (error) {
                vm.isSaving = false;
            });
    }

}

DataContext服务(dc)。到目前为止,这对于一切都很好,甚至是儿童收藏品

function save() {
        return manager.saveChanges()
            .then(saveSucceeded, saveFailed);

        function saveSucceeded(result) {
            logSuccess("Saved Data", result, true);
        }

        function saveFailed(error) {
            throw error;
        }
    }

它将它保存到实体但不保存到数据库,但是如果我更新任何保存到数据库的Company.Name等属性。如果我尝试更新说公司.Territory.Name,它不存在并且在数据库中有它的下表,它就不会更新。

回顾一下,我可以编辑和保存根属性和子集合,但我不确定如何在子集合上创建新实体。

1 个答案:

答案 0 :(得分:2)

From the Breeze Docs

var newCust = manager.createEntity('Customer', {name:'Acme'});

只需执行此操作即可创建“子”对象,然后将新对象添加到父对象的相关集合中。