Предположим, мне нужно выбрать максимальное значение в качестве номера заказа. Таким образом, я выберу MAX(число), назначу номер заказу и сохраню изменения в базе данных. Тем не менее, как я могу помешать другим возиться с номером? Подойдут ли транзакции? Что-то вроде:
ordersRepository.StartTransaction();
order.Number = ordersRepository.GetMaxNumber() + 1;
ordersRepository.Commit();
Будет ли приведенный выше код «блокировки» изменен, чтобы номера заказов читались/записывались только одним клиентом БД? Учитывая, что транзакции являются простыми NHibernate, а GetMaxNumber просто выполняет SELECT MAX(Number) FROM Orders.