Я работаю над проектом, который сохраняет счета.
У меня есть одна таблица для INVOICE
и другая таблица для INVOICE_PRODUCTS
. ID
s обеих таблиц рассчитаны (last value + 1
), а в таблице INVOICE
у меня также есть DOCUMENT_NUMBER
, который также рассчитывается (last document number + 1
).
Моя проблема заключается в том, что несколько пользователей одновременно сохраняют счет-фактуру. Оба имеют одинаковый идентификатор и номер документа.
Каков наилучший способ сохранить это без одинакового идентификатора и номера документа в обоих сохранениях? Есть ли способ «заблокировать» одно сохранение, а когда оно закончится, запустить новое?
Отредактировано:
dymanoid: идентификаторы генерируются в коде:
last = AllCustomerInvoices().Where(t => t.CUSTOMER_INVOICE_ID.ToString().StartsWith(node)).Select(t => t.CUSTOMER_INVOICE_ID).ToList().AsEnumerable().Max().ToString(); return !string.IsNullOrWhiteSpace(last) ? int.Parse(string.Concat(node, int.Parse(last.Substring(node.Length)))) : int.Parse(string.Concat(node, ("0")));
mjwills: я не использую столбцы IDENTITY, потому что идентификатор состоит из ID узла (каждое хранилище в виде отдельного идентификатора узла), но даже у меня был столбец идентификатора, проблема сохраняется на номер_документа