【发布时间】:2014-09-08 23:56:11
【问题描述】:
我将 EF6 与 Code First 结合使用,并在每次查询之前和之后查看具有登录/注销的 SQL 事件探查器日志。 EF 不应该保持与服务器的连接打开并重新使用它,而不是在每次查询时关闭并重新打开它?我正在使用 Ninject 让我的 EF 上下文根据 HTTP 请求实时运行。
【问题讨论】:
标签: .net sql-server entity-framework entity-framework-6
我将 EF6 与 Code First 结合使用,并在每次查询之前和之后查看具有登录/注销的 SQL 事件探查器日志。 EF 不应该保持与服务器的连接打开并重新使用它,而不是在每次查询时关闭并重新打开它?我正在使用 Ninject 让我的 EF 上下文根据 HTTP 请求实时运行。
【问题讨论】:
标签: .net sql-server entity-framework entity-framework-6
根据这篇博文,看起来这可能没问题,只是误导,如果您在 SQL Profiler 中显示“EventSubClass”列,您会发现它并没有真正打开新连接,它们是池化的。
http://blog.dotsmart.net/2011/03/17/is-sql-server-profiler-showing-connection-pooling-not-working/
【讨论】:
默认情况下,实体框架管理与数据库的连接。但是,您可以在 Entity Framework 应用程序中手动管理连接和事务。
您可以通过以下方式显式打开:
dbContext.Connection.Open();
在连接池方面,默认连接池大小为 100。 连接字符串的“最大池大小”属性可以在这里为您提供帮助。
【讨论】: