我尝试更新我的对象的一个字段,并立即将其保存到数据库中。
using (var ctx = new DataModel(_connectionString))
{
var MyObject it = ctx.MyObjects.Where(someConstraint).ToList()[0];
try
{
//update check time
ctx.Refresh(RefreshMode.StoreWins, it); //making sure I have it
ctx.AcceptAllChanges(); // in case something else modified it - seems unnecessary
it.TimeProperty= DateTime.UtcNow; //Setting the field
ctx.DetectChanges(); //seems unnecessary
ctx.SaveChanges(SaveOptions.AcceptAllChangesAfterSave); //no SaveOptions changed the behavior
}
catch (OptimisticConcurrencyException)
{
_logger.DebugFormat(workerClassName + ": another worker just updated the LastCheckTime");
}
//Do some other work and/or sleep
}
当我在具有 2 个或更多实例的 Azure 模拟器中运行它时,我会在这里得到很多 OptimisticConcurrencyExceptions。
我正在尝试刷新对象,更新其中一个字段,然后将这些更改推送到数据库。但是,乐观并发阻止了我。
注意:乐观并发是在我从未接触过的 TimeStamp 字段上设置的。
为什么会这样,我该如何解决?