Подтвердить что ты не робот

Как вы относитесь к concurrency в NHibernate?

Как вы поддерживаете оптимистический/пессимистический concurrency с помощью NHibernate?

4b9b3361

Ответ 1

NHibernate по умолчанию поддерживает оптимистичный concurrency. Пессимистический concurrency, с другой стороны, может быть выполнен с помощью метода ISession.Lock().

Эти вопросы подробно обсуждаются в этот документ.

Ответ 2

NHibernate поддерживает 2 типа оптимистических concurrency.

Вы можете либо проверить грязные поля, используя атрибут "optimistic-lock = dirty" в элементе "class" в ваших файлах сопоставления, либо вы можете использовать "optimistic-lock = version" (который также является значением по умолчанию). Если вы используете версию, вам необходимо предоставить элемент "version" в вашем файле сопоставления, который будет отображаться в поле в вашей базе данных.

Версия может иметь тип Int64, Int32, Int16, Ticks, Timestamp или TimeSpan и автоматически увеличивается при сохранении. Подробнее см. Глава 5 в документации NHibernate.

Ответ 3

Вы также можете "просто" вручную сравнить номера версий (при условии, что вы добавили свойство Version в свою сущность).

Ясно Оптимистичный - единственный разумный вариант. Иногда, конечно, нам приходится иметь дело с сумасшедшими сценариями, однако...