2
我必須在數據庫中插入一行,但問題是主鍵是根據行的總數生成的。 例如如果數據庫有25601行,則新插入的記錄的ID將爲CT25602。實體框架可串行化事務死鎖
我想使用事務處理主鍵衝突。 這是我寫的代碼。
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秒內執行相同的操作? –