У меня есть таблица счетов-фактур (и SubSonic 'Invoice' ActiveRecord()
со столбцом InvoiceNumebr
, который должен иметь уникальные номера. Я пытаюсь GetTheNextAvailableNumber()
внутри блока TransactionScope
, используя блок. Это работает.
В чем я не уверен, так это в том случае, если 5 или 50 разных пользователей попытаются создать Счет на ок. в то же время метод возвращает один и тот же номер для всех 5 или 50 пользователей, если они не сохранят объект счета-фактуры до более позднего периода.
Метод GetTheNextAvailableNumber()
, который вызывается внутри блока TransactionScope
, использует запрос Subsonic Select с MAX()
, чтобы получить максимальное число, а затем добавляет 1. У самого столбца действительно есть УНИКАЛЬНЫЙ индекс!
Будет ли уровень изоляции Транзакции по умолчанию по умолчанию (Сериализуемый) гарантировать, что каждый из них получит уникальный номер? Или есть более умный механизм для достижения этого?
Столбец не может иметь IDENTITY, поскольку в столбце PK InvoiceID он уже есть.