我正在使用实体框架 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 是否会使用与数据库相同的真实连接,或者连接池是否会从我这里抽象出来?