Обратный путь в примере проекта Breeze.Sharp ToDo

Мне удалось установить проект Breeze.Sharp ToDo. Я заметил поведение при добавлении нового элемента списка дел. Когда добавляется новый элемент todo, клиент выполняет серверный вызов SaveChanges, и элемент успешно добавляется. Клиент снова должен вызвать сервер с помощью QueryAllTodos, чтобы снова получить последний список. Зачем нужен этот кругосветный рейс? Разве метод SaveChanges не должен объединять изменения (новый список после добавления) со списком клиентов, чтобы избежать повторного обхода?


person wonderful world    schedule 16.07.2014    source источник


Ответы (1)


Ты прав. Нет реальной необходимости повторно запрашивать после сохранения, ЕСЛИ не существует какого-либо другого «побочного эффекта» на стороне сервера (скажем, триггера), который также изменяет данные. Этот код просто перестраховывается.

person Jay Traband    schedule 16.07.2014
comment
Поскольку вы упомянули о побочном эффекте, правильно ли Breeze.Sharp справляется с проблемой параллелизма? Например, при сохранении заказа триггер вычисляет стоимость доставки отдельной позиции заказа и немедленно сохраняет ее в той же таблице. Другой пример: два пользователя обновляют одни и те же сведения о клиенте. Когда один пользователь А сохраняет сведения о клиенте, другой пользователь Б уже сохранил свои изменения, поэтому данные о клиенте пользователя А устаревают и возникает проблема параллелизма. - person wonderful world; 17.07.2014
comment
Если вы определили столбцы параллелизма в своей модели, breeze всегда будет проверять их при каждом обновлении, которое он выполняет, и будет вызывать исключение параллелизма, если объект был обновлен другим процессом. - person Jay Traband; 17.07.2014
comment
Повторный запрос не является строго необходимым. Он включен отчасти потому, что для приложений Todo традиционно повторно запрашивать после сохранения, а отчасти для получения дополнительных изменений, которые могли быть сделаны каким-либо другим пользователем. Это мое оправдание, и я придерживаюсь его. :-) - person Ward; 17.07.2014