Параллельная инкрементация целочисленного столбца при обновлении с помощью NHibernate

У меня есть стол сообщений с столбцом номера версии, чтобы отслеживать n-ю ревизию для каждой записи. Каждый раз, когда строка обновляется, я хотел бы, чтобы ее номер версии был увеличен.

В настоящее время я увеличиваю столбец в моей логике приложения, но потому, что post.Version += 1; не соответствует UPDATE Posts SET Version = Version + 1... , я беспокоюсь, что два одновременных обновления приведут только к одному увеличению версии.

Решить это легко с помощью ручного выражения SQL (как указано выше) или триггера обновления, но я предпочел бы, чтобы Fluent NHibernate позаботился об этом для меня, если это возможно.

Использование транзакции для обновления не помешало бы двум одновременным чтениям как от версии 7, так и к решению, что следующее значение должно быть 8. Таким образом, два обновления до версии 7 могут привести к значению 8 вместо 9.

Как мне создать или сопоставить целочисленный столбец с автоматическим увеличением, который безопасен для параллелизма?

Это уже испечено в NHibernate. Проверьте NH docs на <version> и на Оптимистическом контроле параллелизма.

Почему вы управляете столбцом Version вручную?

Используйте поддержку NHibernate для оптимистического параллелизма (см. http://www.nhforge.org/doc/nh/en/index.html#mapping-declaration-version ), и вы получите это бесплатно (наряду с более правильным поведением ИМО )

  • NHibernate пытается выполнить запрос в несуществующем столбце
  • Как индексировать внешние ключи с помощью Fluent NHibernate и SchemaUpdate.Execute ()?
  • Свободное сопоставление NHibernate для DateTime со значением по умолчанию
  • Инициатор NHibernate изменяет исключение
  • Свободный nHibernate генерирует неверный запрос
  • Автоматизация столбцов временной метки SQL Server в байт с использованием Fluent nHibernate
  • Fluent Nhibernate QueryOver занимает много времени для получения данных с SQL Server
  • Можно ли установить описание столбцов SQL Server с использованием свободной nhibernate-карты?
  • Выберите N случайных записей в SQL Server без повторения
  • Как получить NHibernate SchemaExport для создания столбцов Timeramp SQL Server?
  • Свободный выпуск NHibernate с nvarchar (max) и sql express 2005
  • Interesting Posts

    Перемешать записи и последовательные записи на сервере sql

    Как заставить SQL-функцию запускать другой запрос и возвращать значение из любого запроса?

    Dapper.NET, заполняющий класс в «списке классов»,

    Ошибка Microsoft Visual Studio 2013: подпись метки времени и / или сертификат не могут быть проверены или искажены

    Как дезактивировать поле

    Можно ли ввести sql для удаления заявления?

    Приобретение соединения и странное поведение при использовании задачи «Выполнение пакета»

    Идентификатор с несколькими частями «System.Data.DataRowView» не может быть связан

    Как создать логин для экземпляра SQL Server?

    Трудность объединения имени разработчика и имени тестера в запросе SQL-сервера

    Большой блок извлечения данных с использованием проблемы с NHibernate

    Логический метод использования SSIS для преобразования данных и их загрузки в Azure Data Warehouse

    Заблокировка SQL Server 2005 на ключ

    Неправильный синтаксис около '1'. Ожидание идентификатора, QUOTED_ID или '.' Ошибка с SQL Pivot

    Сохраненная процедура, которую необходимо удалить из таблицы, затем сравнить входящее значение

    Давайте будем гением компьютера.