Какая транзакция IsolationLevel лучше всего гарантировать, что создаются только 1 Datarow. Предполагается использование SQL Server 2012 и EntityFramework 6.Какой уровень изоляции транзакций можно выбрать для атомарного сценария «Get or Create»
using(var db = new XyzContext())
{
using(var dbContextTransaction = db.Database.BeginTransaction(???))
{
try
{
Item obj = db.Item.SingleOrDefault(o => o.Hashcode.Equals(hashCode));
//it is possible that 2 threads are coming through here and both have obj == null
if(obj == null)
{
obj = db.Item.Add(new Item
{
Hashcode = hashCode,
State = 0,
});
}
db.SaveChanges();
dbContextTransaction.Commit();
}
catch(Exception)
{
dbContextTransaction.Rollback();
}
}
}
Я добавил дополнительную информацию в свой ответ. –