3

簡単な質問かもしれませんが、答えが見つかりません。dbContextを宣言するWebフォームがあります。ただし、ページがポストバックを実行すると、dbContextが上書きされ、オブジェクトの追跡が失われます。破棄する準備ができるまで、dbContextを変更から保護するにはどうすればよいですか?

4

2 に答える 2

5

DbContextを使用するための推奨パターンは、HTTP要求ごとに新しいDbContextをインスタンス化し、その特定の要求の期間中そのインスタンスを使用することです。

HTTPリクエスト間でDbContextのインスタンスを保持しようとしないでください。

于 2012-08-02T18:55:07.090 に答える
4

dbContextリクエスト間で再利用してはいけません!

使用する正しいパターンは、HTTP リクエストごとに新しいオブジェクトを作成することです (ポストバックかどうかに関係なく)。

using (var context = new MyDbContext())
{
    ...
}

なんで?これは軽量構造である
ためですが、さらに重要なことは、スレッドセーフではないことです。DbContext

ポストバックで何かを更新したい場合は、同じパターンを使用します。たとえば、

object productId = //get it from request
using (var context = new MyDbContext())
{
    //that's your old product
    var product = context.Select(p=>p.Id == product.Id).FirstOrDefault();
}
于 2012-08-02T19:14:40.353 に答える