我有一个名为 DeviceAccount 的模型。这是一个连接表,允许我创建多对多关系。
我有一个功能,它通过将一个帐户和一个设备交给它来创建一个新的 DeviceAccount 加入。看这里:
var createDeviceAccount = function (account, device) {
var initialValues = {
account: account,
device: device
};
return manager.createEntity(entityNames.deviceAccount, initialValues);
};
我有一个删除 DeviceAccount 的功能。看这里:
var deleteDeviceAccount = function (account, device) {
var baseQuery = entityQuery.from('DeviceAccounts');
var p1 = new breeze.Predicate('device', 'eq', device);
var p2 = new breeze.Predicate("account", "eq", account);
var modQuery = baseQuery.where(p1.and(p2));
var results = manager.executeQueryLocally(modQuery);
results[0].entityAspect.setDeleted();
};
如果我在本地创建、删除、创建、删除相同的设备/帐户对,则没有问题。如果我使用服务器上存在的设备/帐户对,我可以很好地删除它,但是当我再次添加它时,我收到以下错误:
未捕获的错误:此密钥已附加:DeviceAccount:#Test.Models-5:::5
如果我更深入地遵循这一点,我可以看到删除本地设备会将 entityState 更改为“已分离”,如果删除服务器上也存在的设备,则其 entityState 将更改为“已删除”。我不能比这更进一步,我希望有人能解释为什么会发生这种情况?