Breeze не видит, что произошло с данными на стороне сервера при сохранении этих данных. Команда Breeze сказала, что вы должны повторно запросить обновленные данные. Действия, выполняемые синхронно во время этого сохранения, такие как триггеры sql (например, после вставки), могут быть рассмотрены, поскольку эти операции могут преобразовывать объекты во время сохранения, чтобы они выполнялись на клиенте: это будет полезно для новых ключей, не сгенерированных Breeze, таких как составные ключи. . Мне трудно обойти эту проблему. Помощь?
ОБНОВЛЕНИЕ 1: Если это принцип Breeze, то, вероятно, это ошибка.
1) Триггер (на стороне сервера) является частью сущности (таблицы)
2) Используемые рамки:
- серверная платформа: .NET Framework 4.5
- клиентская структура: Breeze 1.3.5
- структура просмотра: нокаут 2.2.1
3) сценарий результата из saveChanges:
function saveTousRecos() {
return manager.saveChanges()
.then(success)
.fail(fail);
function success(saveResult) {
/* do your post-save work here */
axi = saveResult.entities[0].jobtab();
// axi is an identity key generated at server and sent back to client by Breeze
// result : Breeze value = (195), the same as server-side (195)
ara = saveResult.entities[0].seqtab();
// ara is a property value inserted by sql FOR INSERT trigger,
// result : Breeze value = (NULL), server-side has (13)
logger.log("Saving succeded... ");
}
function fail(error) {
logger.log("Saving failed: " + error.message);
}
}
P.S. : все значения, вставленные триггерами SQL, вообще не видны, если вы не вызываете объект повторно с сервера, а не из кеша; кажется обходным решением, а не решением, которое я полагаю.
ОБНОВЛЕНИЕ 2: я думаю, что Breeze рассматривает мои возвращаемые объекты как OData.
1) из моего контроллера Breeze Api я использую это:
return _contextProvider.Context.clients.Where(uc => uc.refclie == rqnoclie);
2) Breeze сказал: с OData любое изменение значения вычисляемого поля на стороне сервера не будет доступно в Breeze после обновления. Если вам нужно обновить эти значения, вы должны повторно запросить...
3) поэтому с этого момента решение для меня - REQUERY (нехорошие новости), чтобы получить мои вычисленные или инициированные результаты. Надеюсь, что будущее перехватчиков BeforeSaveEntity решит эту проблему. Или как я могу получить чистые объекты для Breeze (не OData, а вычисляемые или запускаемые на стороне сервера)? Есть ли способ выбраться из этой беды?