2015-03-18 1 views
0

Я создаю новый объект с manager.createEntity("Foo", { a: 1, b: 2}); Проблема Foo имеет составной ключ. Оба значения a и b являются его значениями PK. Поэтому, если я вызываю createEntity таким образом, и сущность уже существует, я получаю ошибку MergeStrategy of Disallowed.Создание объекта с Breeze с составным ключом, который может уже существовать

Какова наилучшая практика здесь? Должен ли я позвонить manager.fetchEntityByKey("Foo", [a,b], true), чтобы узнать, существует ли он первым? Или я должен обернуть вызов createEntity в try/catch? Или что-то другое?

ответ

1

Я бы точно назвал fetchEntityByKey. Проблема с использованием только createEntity с try/catch заключается в том, что этот вызов МОЖЕТ преуспеть, потому что «новый» объект еще не находится в кеше, потому что он еще не получен, но вы все равно получите ошибку позже, когда будете пытаться сохраните его, потому что сервер обнаружит, что объект нельзя добавить, поскольку он уже существует. Лучше всегда ловить ошибки раньше (неудачно).

+0

Thanks Jay. Позже я понял, что это не проблема 99% времени при использовании createEntity, потому что вы почти никогда не устанавливаете значение PK при создании объекта. Это почти всегда устанавливается на сервере. Но в этой ситуации и, вероятно, только из-за устаревшей БД, с которой я имею дело, у объекта есть составная ПК, где 3 из 5 свойств составляют ключ. Спасибо за быстрый ответ! – mikesigs

Смежные вопросы