0

私はEntityFrameWorkを初めて使用し、いくつかのスレッドによって異なるテーブルに保存/更新するプログラムを持っています。

最初は、アクションごとにデータベースへの新しい接続を開きました

var db = new AppDBEntities()

AppDBEntitiesはObjectContextから継承します

「接続数が多すぎます」という例外が発生し、151の接続に到達したことに気付くまで。

MySql DBのmax_connectionプロパティを増やすことはできますが、もちろんこれは正しい解決策ではありません...

だから私はアプリにすべてのスレッドに1つの接続を使用させようとしましたが、これを管理するのにほとんど迷いませんでした。

同期オブジェクトを使用するかどうかに関係なく、すべてのスレッドで1つのDB接続を使用する方法についてのアイデア(Maby Entity Frameworkには、この問題に対する独自のソリューションがすでにあります。)

ありがとう。

4

2 に答える 2

0

スレッドを開始するクラスで静的に定義します。ただし、スレッドセーフを考慮する必要があります。同時にオブジェクトにアクセスできるのは1つのスレッドだけなので、通常は読み取り/書き込みの前にオブジェクトをロックすることを意味します。DbContextの場合はわかりません。

于 2012-12-05T15:29:04.567 に答える
0

AppDBEntities の呼び出しを using ステートメントの中に入れてみませんか。これにより、接続が閉じられます。

using(var db = new AppDBEntities()){
// your code goes here.
}
于 2012-12-05T01:04:24.053 に答える