Мне нужно вставить строку в базу данных, но проблема в том, что первичный ключ создается на основе общего количества строк. . если db имеет 25601 строк, идентификатором вновь вставленной записи будет CT25602.Entity Framework Serializable Transaction Deadlock
Я хочу использовать транзакции для коллизий первичных ключей. Вот код, который я написал.
public void CreateContact(ContactViewModel input)
{
var transactionScopeOptions = new TransactionOptions
{
IsolationLevel = IsolationLevel.Serializable,
Timeout = TimeSpan.MaxValue
};
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.Required, transactionScopeOptions))
{
var contactNo = GenerateIdentity();
var contact = MapContactFields(new NavContact { No_ = contactNo }, input);
_db.Contacts.InsertOnSubmit(contact);
_db.SubmitChanges();
transaction.Complete();
}
}
Этот код дает мне взаимоблокировки, если два человека пытаются вставить контакт в небольшой промежуток времени.
Любые предложения? Спасибо
Не мог ли я использовать какой-либо механизм «отсрочки», например, повтор, выполняющий одну и ту же операцию за x секунд? –