Widgetmaster具有许多widgetVersions。 widgetVersion只能有一个widgetMaster。微风虫?它试图添加相关实体,即使在savechanges()中仅指定了主实体()
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);
...微风在孩子 “widgetVersion” 到widgetVersions仍然在增加表(没有任何widgetMasterID设置 - 它被设置为0),我不希望它这样做!或者至少如果它仍然存在,我希望它拿起新添加的widgetMasterID。
为什么微风添加相关的实体,即使我已经告诉它只做主人?我想做主人,获取新ID,然后保存包含新ID的widgetVersion实体,Breeze因为某些原因阻止我这样做,我不明白。
挂上。 (当你需要他的时候,病房在哪里,呃)我做错了吗?我应该通过createEntity('widgetMaster')'创建一个newWidget实体吗?然后做一些附加的widgetVersion实体吗?这是否会创建一个链接,自动在相关的widgetVersion实体中填写widgetMaster ID? – TheMook
如果widgetChild是一个添加到widgetParent的新实体,那么Breeze和您的数据库不能仅添加父项,它们必须添加数据库所需的任何子项,以便不抛出任何空引用错误。 –
但它没有添加到父项。无论如何不明确。正如你可以在我的激活方法中看到的,我创建了两个包含实体的observables。一个包含widgetMaster,另一个包含widgetVersion。问题似乎是,即使我明确地告诉datacontext只保存widgetMaster开始,它也会关闭并创建我在缓存中的widgetVersion。允许Breeze指定要保存的实体,如果它只是忽略该参数,有什么意义? – TheMook