Когда я меняю OnlinePayment
Я хочу создать уникальную цифру InvoiceNumber
. Этот код будет генерировать уникальный идентификатор:Выполняет ли запрос внутри транзакции, гарантирует уникальность сгенерированного числа?
int newId = db.OnlinePayments.Max(op => op.InvoiceNumber) + 1;
Однако, это не сработает, если другая запись добавляется в то же время. Использование столбца Identity
не является вариантом, так как значение InvoiceNumber
должно меняться при каждом изменении базы данных. Будет ли следующий код гарантировать уникальность сгенерированного InvoiceNumber
?
using (var transaction = db.Database.BeginTransaction())
{
try
{
int newId = db.OnlinePayments.Max(op => op.InvoiceNumber) + 1;
opi.InvoiceNumber = newId;
await db.SaveChangesAsync();
transaction.Commit();
}
catch
{
transaction.Rollback();
}
}
Немного неясно .... 'GUID'? 'Генератор случайных чисел (RNG)'? приходят на ум ... – EdSF
Почему бы не использовать 'InvoiceNumber' в качестве столбца идентификации? –
@ArindamNayak Я считаю, что ответил на ваш вопрос выше. –