【问题标题】:LINQ to SQL DB Connections not closingLINQ to SQL DB 连接未关闭
【发布时间】:2010-12-31 20:46:30
【问题描述】:

我在 asp.net mvc 应用程序中使用 LINQ to SQL。我通过 ajax 调用调用存储过程。

2-3 个用户的活动连接数达到 100 个活动连接数。然后发生服务器超时。

然后我使用 IOC -autofac 重新使用具有数据上下文的同一个存储库。现在,我在每个登录用户加一个的 SQL 服务器上获得了一个活动连接。 我以前从未见过。

  1. 为什么 Lin2sql 在不使用时不会断开连接?
  2. 在登录会话的 ajax 调用中调用存储过程会创建一个新的活动连接吗?
  3. 带有循环和/或等待的存储过程可以保持打开连接吗??

【问题讨论】:

  • 需要添加一些代码。您没有在某处释放连接...
  • 不是 LINQ 2 SQL 应该只在需要时打开连接,因为它是延迟加载的。即使在它被丢弃之前,它也会在不再需要时关闭连接??对吗??
  • 这是不正确的。延迟加载与打开或关闭连接无关。
  • @Randy - 事实是 linq to sql 应该只在需要时打开然后关闭。不管这里的 .net 对象是否释放存储库类

标签: asp.net-mvc ajax linq-to-sql stored-procedures


【解决方案1】:

与 L2S 上下文对象关联的连接只会在您或 GC 释放连接对象时被丢弃。它不会因为不活动而被丢弃。

如果您尝试在 Using 语句中创建上下文对象,它们将得到适当的处理。

【讨论】:

  • 你什么时候在存储库模式中使用带有 using 语句的数据上下文????
  • @Joe:这可能会有所帮助 - stackoverflow.com/questions/2357615/…
  • 我确实在存储库上实现了一次性,但我没有 a) 将存储库包装在 using 中,也没有 b) autofac 限制了生命周期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多