Widgetmaster には多数の widgetVersion があります。widgetVersion は、1 つの widgetMaster のみを持つことができます。
Public Class widgetMaster
Public Property ID() As Integer
...other properties
Public Overridable Property WidgetVersions() As ICollection(Of widgetVersion)
End Class
Public Class widgetVersion
Public Property ID() As Integer
Public Property WidgetMasterID() As Integer
...other properties
Public Overridable Property WidgetMaster() As widgetMaster
End Class
私のビューモデル:
var newWidget = ko.observable();
var newWidgetVersion = ko.observable();
var isSaving = ko.observable(false);
var activate = function () {
return datacontext.newWidget(newWidget),
datacontext.newWidgetVersion(newWidgetVersion).then(setNewWidgetVariables());
}
};
var setNewWidgetVariables = function() {
newWidget().groupId(globalVar.selectedGroupId());
}
var save = function () {
isSaving(true);
return datacontext.saveChanges([newWidget]).fin(complete);
function complete() {
isSaving(false);
}
};
私の saveChanges は newWidget エンティティのみを指定していますが:
return datacontext.saveChanges([newWidget]).fin(complete);
...Breeze はまだ子の "widgetVersion" を widgetVersions テーブルに追加しています (widgetMasterID も設定されていません - 0 に設定されています)。または、少なくとも持続する場合は、新しく追加された widgetMasterID を取得する必要があります。
Breeze にマスターのみを実行するように指示したにもかかわらず、Breeze が関連エンティティを追加するのはなぜですか? マスターを実行し、新しい ID をフェッチしてから、その新しい ID を含めて widgetVersion エンティティを保存したいのですが、Breeze が何らかの理由でこれを停止しています。