0

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 が何らかの理由でこれを停止しています。

4

1 に答える 1