使用可能已经存在的复合键使用 Breeze 创建实体

Creating an entity with Breeze with a compound key that may already exist

我正在使用 manager.createEntity("Foo", { a: 1, b: 2}); 创建一个新实体 问题是 Foo 有一个复合键。 ab都是它的PK值。因此,如果我以这种方式调用 createEntity,并且该实体已经存在,我会收到 MergeStrategy of Disallowed 错误。

此处的最佳做法是什么?我应该先调用 manager.fetchEntityByKey("Foo", [a,b], true) 看看它是否存在吗?或者我应该将 createEntity 调用包装在 try/catch 中吗?或者别的什么?

我肯定会调用 fetchEntityByKey。仅将 createEntity 与 try/catch 一起使用的问题是此调用可能会成功,因为 'new' 实体尚未在缓存中,因为它尚未被获取但是稍后当您尝试保存它时仍然会出错,因为服务器会检测到该实体无法添加,因为它已经存在。最好始终尽早发现错误(failfast)。