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 が「Detached」に変更され、サーバーにも存在するデバイスを削除すると、entityState が「Deleted」に変更されることがわかります。私はこれ以上先を追うことはできず、誰かがなぜこれが起こっているのか説明できることを望んでいましたか?