实体框架,如何增加限制?

时间:2012-11-21 13:17:07

标签: sql-server sql-server-2008 entity-framework database-connection connection-pooling

我们正在构建一个应用程序,它同时对数据库提出每周非常大量的请求。

我们有大约15-20个线程同时查询数据库。

我们实际上遇到了很多问题:

在数据库方面(RAM不够):正在解决。

但也在客户端。尝试获取连接或执行命令时,我们有异常。这些命令是通过实体框架制作的。

该应用程序有两部分:一个网站和一个控制台应用程序。

那么有谁能告诉我如何增加以下值?

  • 连接超时
  • 命令超时
  • 连接池大小

我认为在服务器端(SQL Server或IIS)有几件必须要做的事情,但我找不到哪里?

2 个答案:

答案 0 :(得分:2)

可以在ObjectContext个实例上设置

Command timeout。连接超时和连接池大小为configured in connection string,但如果您只有15-20个线程,则问题很可能是其他地方,因为默认连接池大小为100。

答案 1 :(得分:1)

将objectContext包含在using块中,以便在完成工作后处理上下文。

你可以创建一个方法来传递使用你的实体上下文的线程来完成你想要的工作,然后在工作完成后处理连接,你可以使用stateinfo对象变量传入不同的参数来使用生活方式。

void DoContextWork(object stateInfo)
    {

    // wrap your context in a using clause
    using(var objectContext = new YourEntity()
       {
           // Do work here
       }

    }

您可以让多个线程调用此方法,每次调用连接时,您都可以在数据库上完成工作而不会遇到上述问题。