6

で呼び出されるこのようなものがあるとし Controllerます:

using (var context = new SqlContext())
{
    context.Items.Add(new Item("item1"));
}

電話するべきcontext.SaveChanges();ですか?

4

2 に答える 2

11

エンティティ フレームワークは、DbContext を使用して作業単位パターンを実装します。これは、データベースに対して実行することのパッケージを定義し、変更の保存を呼び出して、それらすべてを一度にデータベースに伝達することを意味します。すべての操作は単一のトランザクション内で (単一の saveChanges 呼び出しに対して) 実行されます。つまり、データベースに一度にすべてまたはまったく伝搬されないことを意味します。

変更の保存を呼び出す前に、変更はローカル追跡グラフに適用されますが、savechanges が呼び出されるまでデータベース自体には適用されません。

于 2013-01-11T00:51:11.063 に答える
1

はい。

context.SaveChanges();行ったすべての変更は、が呼び出されるまで保存されません。

他の DbContext からのオブジェクトがある場合 (これは絶対に与えられた状況ではありません)、代わりに次のコード行を使用して、エンティティの状態を明示的に変更する必要があることに注意してください。

Item item = new Item("item1")
db.Entry(item).State = EntityState.Modified;
db.SaveChanges();
于 2013-01-11T00:45:31.573 に答える