【问题标题】:When Entity Framework opens/closes a connection repeatedly, is it the same actual connection?当实体框架反复打开/关闭一个连接时,它是同一个实际连接吗?
【发布时间】:2013-01-17 22:06:50
【问题描述】:

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

【问题讨论】:

    标签: sql-server entity-framework entity-framework-4


    【解决方案1】:

    经过一些测试,似乎无法确定您是否继续使用相同的连接。很多时候你会,但有时你似乎不会。可能与并发相关。最终,假设它是模棱两可的并且会改变可能是最安全的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 2012-09-13
      • 2017-01-29
      • 1970-01-01
      相关资源
      最近更新 更多