0

我正在使用实体框架 4.x。当在单个业务操作中使用 Context 的单个实例重复查询数据库时,我知道 Entity Framework 会为每个查询打开和关闭数据库连接。但我的问题是,所有三个查询的连接(同样,上下文的相同实例)是否与数据库的连接相同?或者它会从连接池中获取另一个连接(可能是中毒的连接)?

示例 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 回答