我的应用程序是asp.net MVC3,我正在使用SQLExpress 2012.我收到以下错误
超时已过期。操作完成之前经过的超时时间或服务器没有响应。
当我尝试运行以下内容时:
public static List<vw_MasterView> GetMasterView(DateTime? fromDate, DateTime? toDate)
{
if (fromDate == null) fromDate = new DateTime(1900, 1, 1);
if (toDate == null) toDate = DateTime.Now;
using (DALDataContext ctx = new DALDataContext())
{
var q = from c in ctx.vw_MasterViews
where c.FirstVisitDate >= fromDate && c.LastVisitDate <= toDate
select c;
return q.ToList();
}
}
我确实将连接时间(服务器/高级属性)增加到6000。
当我从设计器(在SQL Server中)运行视图时,我收到相同的错误消息,但是当我运行查询(在SQL服务器中)它工作正常时,需要54秒才能执行。
我很感激你的建议,谢谢你。
答案 0 :(得分:0)
您可能需要设置DBContext的连接时间:
ctx.CommandTimeout = 200;
答案 1 :(得分:-1)
DataContext
类的CommandTimeout
的默认值设置为30秒。任何需要较长时间才能完成的数据库查询超过30秒(并且正如您所写的那样大约需要60秒)将抛出 System.Data.SqlClient.SqlException:Timeout expired Exception 。
如果查看自动生成的DALDataContext
子类,您将会有一些部分方法声明,您的兴趣点应该是OnCreated
方法。您可以在另一个部分类中定义OnCreated
方法的主体,其全名与自动生成的类的全名相同,并按以下方式设置所需的超时值:
partial class DALDataContext : System.Data.Linq.DataContext
{
partial void OnCreated()
{
this.CommandTimeout = 100;
}
}