【问题标题】:Is Entity Framework supposed to be closing/re-opening connections per-query?实体框架是否应该关闭/重新打开每个查询的连接?
【发布时间】:2014-09-08 23:56:11
【问题描述】:

我将 EF6 与 Code First 结合使用,并在每次查询之前和之后查看具有登录/注销的 SQL 事件探查器日志。 EF 不应该保持与服务器的连接打开并重新使用它,而不是在每次查询时关闭并重新打开它?我正在使用 Ninject 让我的 EF 上下文根据 HTTP 请求实时运行。

【问题讨论】:

    标签: .net sql-server entity-framework entity-framework-6


    【解决方案1】:

    根据这篇博文,看起来这可能没问题,只是误导,如果您在 SQL Profiler 中显示“EventSubClass”列,您会发现它并没有真正打开新连接,它们是池化的。

    http://blog.dotsmart.net/2011/03/17/is-sql-server-profiler-showing-connection-pooling-not-working/

    【讨论】:

    • 只要满足一定条件,连接就会被池化,最大的是连接字符串与池中的连接相同。但是是的,只要它能够使用池中的连接,就可以避免操作中最昂贵的部分。
    【解决方案2】:

    默认情况下,实体框架管理与数据库的连接。但是,您可以在 Entity Framework 应用程序中手动管理连接和事务。

    您可以通过以下方式显式打开:

    dbContext.Connection.Open();

    在连接池方面,默认连接池大小为 100。 连接字符串的“最大池大小”属性可以在这里为您提供帮助。

    【讨论】:

      猜你喜欢
      • 2014-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-08
      • 1970-01-01
      相关资源
      最近更新 更多