2009-12-18 179 views
1

我正在调试Jaroslaw Kowalski提供程序包装。在调试它时,我发现实体框架在每次查询后关闭连接。与数据库中的每个交互,应用程序的生命周期中,一个数据库连接打开,并执行查询后连接被关闭实体框架和数据库连接

我的问题是:

  • 无论底层提供默认做连接池。
  • 如果我提供我自己的池,那么我将如何知道何时关闭连接。目前我正在使用Thread.GetDomain()。ProcessExit事件注册并在事件触发时关闭连接。这种方法好吗?

困扰我的事情是Entity Framework本身正在关闭连接。所以,我有点犹豫是否需要集中连接,或者在特殊情况下可能会导致问题。

回答

4

仅供参考:

EF只关闭它打开的连接。

所以,如果你这样做手工的:

((ctx.Connection as EntityConnection).StoreConnection as SqlConnection).Open(); 

subsequents查询和SaveChanges()不应该关闭连接。

希望这有助于

亚历

2

默认connectionpool = 1连接。所以不要担心。

这里的整个想法是,我们有1编程模型(断开连接),配置&调整是外部的。

0

在.NET 4中,引用:Managing Connections and Transactions

应注意以下事项管理时连接:

对象上下文将打开连接如果在手术之前尚未开放。如果对象上下文在操作过程中打开连接,那么在操作完成时它将始终关闭连接。

如果手动打开连接,对象上下文将不会关闭它。调用Close或Dispose将关闭连接。

如果对象上下文创建连接,则在处理上下文时连接将始终处置。

在长时间运行的对象上下文中,必须确保上下文在不再需要时处理。

如果您为对象上下文提供了一个打开的EntityConnection,则必须确保它已被丢弃。