6

リロードを使用した楽観的同時実行例外の解決(データベースが優先)を参照してください。

using (var context = new BloggingContext())
{
    var blog = context.Blogs.Find(1);
    blog.Name = "The New ADO.NET Blog";
    bool saveFailed;
    do
    {
        saveFailed = false;

        try
        {
            context.SaveChanges();
        }
        catch (DbUpdateConcurrencyException ex)
        {
            saveFailed = true;

            // Update the values of the entity that failed to save from the store
            ex.Entries.Single().Reload();
        }

    } while (saveFailed);
}

なぜメソッドSaveChanges()が後に呼び出されるのReload()ですか?この呼び出しによって、データベース内のデータが変更されることはありません。

4

1 に答える 1

3

私はそれがあまり明確ではないことに同意します。このコードの意図は文の中にあります

その後、エンティティは通常、何らかの形でユーザーに返され、ユーザーは変更を再度行って再保存する必要があります。

したがって、コメントを追加した方がよかったでしょう。

...
// User evaluates current values and may make new changes.
try
{
    context.SaveChanges();
}
...
于 2013-02-19T21:46:59.990 に答える