1

エンティティ フレームワークのコンテキスト オブジェクトを毎回使用したいと考えていました。asp.netで定義するより良い方法は何ですか?

元:

using(employeeEntities context = new employeeEntities ())
    {

    }

このコンテキストを再利用せずにどこでも使用したいusing

4

2 に答える 2

2

マイクロソフトがコンテキストを別の方法で使用することを推奨している場合は、次のドキュメントを参照してください。

...
The lifetime of the ObjectContext begins when the instance is created and ends when the instance is either disposed or garbage-collected. Use using if you want all the resources that the context controls to be disposed at the end of the block. When you use using, the compiler creates a try/finally block and calls dispose in the finally block. Here are some general guidelines when deciding on the lifetime of the object context:

1. When working with long-running object context consider the following:
 - As you load more objects and their references into memory, the object
   context may grow quickly in memory consumption. This may cause

   performance issues.
 - Remember to dispose of the context when it is no longer required.
 - If an exception caused the object context to be in an unrecoverable
   state, the whole application may terminate.
 - The chances of running into concurrency-related issues increase as
   the gap between the time when the data is queried and updated grows.

2. When working with Web applications, **use an object context instance per request**... 

3. When working with Windows Presentation Foundation (WPF) or Windows Forms, use an object context instance per form. This lets you use change tracking functionality that object context provides. 
...

さらに、この関連スレッドを見てください: Web 要求ごとに 1 つの DbContext... なぜ?

于 2013-11-11T07:03:59.467 に答える
0

シンタックス シュガーの使用を避けたいだけusingで、毎回新しいコンテキストを作成したい場合は、次のようなコードを書くのに役立ついくつかの拡張メソッドを書くことができます。

// Execute is the extension method which takes the code 
// in the using block as a delegate
SomeEntities.Execute(context => 
    context.SomeTable.Where(item => item.Ammount > 100));

それがあなたが望むものなら、私はあなたにコードを共有することができます. 常に単一のコンテキストを使用する場合は、CloudyMarble の回答を参照してください。

于 2013-11-14T07:39:38.893 に答える