在breeze中添加相关主/子实体(一对多)
我有一个小部件的主文件,可以有多个版本的小部件共享同一个widgetmaster。因此,数据库上有widgetMasters和widgetVersions表 widgetMaster ID是一个标识整数字段,设置了widgetversions的icollection Widgetversion有一个外键,指向它所属的widgetMaster ID 我在我的网站上有一个“创建新小部件”表单。这是在按下按钮后加载的,它使用“createEntity”为widgetMaster和widgetVersion创建空白实体。其思想是在创建版本“001”的同时创建父级“widgetMaster”。master只包含描述和几个类别字段。版本包含与此版本小部件相关的特定字段,最终可能会有几十个版本 用户填写所有字段并按“保存” 此时,我验证表单字段,如果一切正常,则继续通过“datacontext.saveChanges()”保存实体。这是在我的“新建”表单视图的viewmodel中完成的 这在创建widgetMaster时效果很好,但是我需要对这个过程有更多的控制,我认为。。。我需要在通过“savechanges”创建id之后,但在它尝试保存widgetVersion实体之前,在widgetVersion实体上设置外键在breeze中添加相关主/子实体(一对多),breeze,Breeze,我有一个小部件的主文件,可以有多个版本的小部件共享同一个widgetmaster。因此,数据库上有widgetMasters和widgetVersions表 widgetMaster ID是一个标识整数字段,设置了widgetversions的icollection Widgetversion有一个外键,指向它所属的widgetMaster ID 我在我的网站上有一个“创建新小部件”表单。这是在按下按钮后加载的,它使用“createEntity”为widgetMaster和widgetVersi
由于“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);
}
};
卡尔,博洛亚,给我们一把小提琴看看,或者至少给我们看一下代码示例要点。我已经想出了如何做到这一点(我想),但遇到了另一个问题,我刚刚发布!