在breeze中添加相关主/子实体(一对多)

在breeze中添加相关主/子实体(一对多),breeze,Breeze,我有一个小部件的主文件,可以有多个版本的小部件共享同一个widgetmaster。因此,数据库上有widgetMasters和widgetVersions表 widgetMaster ID是一个标识整数字段,设置了widgetversions的icollection Widgetversion有一个外键,指向它所属的widgetMaster ID 我在我的网站上有一个“创建新小部件”表单。这是在按下按钮后加载的,它使用“createEntity”为widgetMaster和widgetVersi

我有一个小部件的主文件,可以有多个版本的小部件共享同一个widgetmaster。因此,数据库上有widgetMasters和widgetVersions表

widgetMaster ID是一个标识整数字段,设置了widgetversions的icollection

Widgetversion有一个外键,指向它所属的widgetMaster ID

我在我的网站上有一个“创建新小部件”表单。这是在按下按钮后加载的,它使用“createEntity”为widgetMaster和widgetVersion创建空白实体。其思想是在创建版本“001”的同时创建父级“widgetMaster”。master只包含描述和几个类别字段。版本包含与此版本小部件相关的特定字段,最终可能会有几十个版本

用户填写所有字段并按“保存”

此时,我验证表单字段,如果一切正常,则继续通过“datacontext.saveChanges()”保存实体。这是在我的“新建”表单视图的viewmodel中完成的

这在创建widgetMaster时效果很好,但是我需要对这个过程有更多的控制,我认为。。。我需要在通过“savechanges”创建id之后,但在它尝试保存widgetVersion实体之前,在widgetVersion实体上设置外键


由于“datacontext.saveChanges()”似乎是一个一站式服务,我完全不知道如何使用刚保存的widgetmaster中新创建的ID保存widgetVersion实体。

好吧。我不能说这是否是最好的方法,但以下是我如何做到的。有关更多信息,请参阅此stackoverflow问题:

现在,我的viewmodel保存方法(在允许用户填充新实体中的字段的表单条目视图上)是:

    var save = function () {
        isSaving(true);
        //1st save widgetMaster
        return datacontext.saveChanges(new Array(newWidgetMaster())).then(function (saveResult) {
            //set version entity to have master id
            newWidgetVersion().widgetMasterID(newWidgetMaster().id());
            return datacontext.saveChanges(new Array(newWidgetVersion())).fin(complete);
        }).fail(function (e) {
            //do something with the alert
        });

        function complete() {
            isSaving(false);
        }
    };

卡尔,博洛亚,给我们一把小提琴看看,或者至少给我们看一下代码示例要点。我已经想出了如何做到这一点(我想),但遇到了另一个问题,我刚刚发布!