0

EntityFramework4.xを使用しています。コンテキストの単一インスタンスを使用して単一のビジネス操作でデータベースに繰り返しクエリを実行する場合、EntityFrameworkがクエリごとにデータベース接続を開いたり閉じたりすることを知っています。しかし、私の質問は、3つのクエリすべて(ここでも、コンテキストの同じインスタンス)の接続は、データベースへの同じ接続になるのでしょうか?または、接続プールから別の接続(潜在的に汚染された接続)を取得しますか?

例1:

var conn = (SqlConnection) ((EntityConnection) Context.Connection).StoreConnection;
conn.Open();
var A = new SqlCommand("exec SProcA", conn).ExecuteNonQuery();
conn.Close();
Thread.Sleep(100);
conn.Open();
var B = new SqlCommand("exec SProcB", conn).ExecuteNonQuery();
conn.Close();
Thread.Sleep(100);
conn.Open();
var C = new SqlCommand("exec SProcC", conn).ExecuteNonQuery();
conn.Close();

例2:

// Let Entity Framework manage my connections for me automagically.
var A = Context.TableA.First();
var B = Context.TableB.First();
var C = Context.TableC.First();

これらのシナリオでは、A、B、およびCはデータベースへの同じ実際の接続を使用しますか、それとも接続プールはこれを私から抽象化しますか?

4

1 に答える 1

0

いくつかのテストの後、同じ接続で作業を続けるかどうかは不明のようです。多くの場合そうしますが、時々そうしないようです。並行性に関連している可能性があります。最終的には、あいまいで変更されると想定するのがおそらく最も安全です。

于 2013-01-21T11:22:48.823 に答える