EF Code First - ConcurrencyCheck和乐观并发

时间:2013-02-09 17:05:15

标签: c# entity-framework concurrency

是否可以编写一个接受当前上下文的方法,然后尝试保存对它的更改,但是如果它失败,它是db的刷新值并再次应用更改? 我有这个:

private static void SaveChanges(ScykDb context)
{
    var savedChanges = false;
    while (!savedChanges)
    {
        try
        {
            context.SaveChanges();
            savedChanges = true;
        }
        catch (DbUpdateConcurrencyException ex)
        {
            var objContext = ((IObjectContextAdapter)context).ObjectContext;
            objContext.Refresh(RefreshMode.StoreWins, ex.Entries.Select(e => e.Entity));

        }
    }
}

但它所做的只是应用预先修改的值或保持数据不变(取决于RefreshMode)。我希望此代码从数据库中获取数据,然后对其应用更改。这可能是不可能的,但我很好奇。

0 个答案:

没有答案