Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何增加OrmLite ServiceStack中的命令超时?_C#_.net_Sql Server_Connection String_<img Src="//i.stack.imgur.com/WM7S8.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">ormlite Servicestack - Fatal编程技术网 ormlite-servicestack,C#,.net,Sql Server,Connection String,ormlite Servicestack" /> ormlite-servicestack,C#,.net,Sql Server,Connection String,ormlite Servicestack" />

C# 如何增加OrmLite ServiceStack中的命令超时?

C# 如何增加OrmLite ServiceStack中的命令超时?,c#,.net,sql-server,connection-string,ormlite-servicestack,C#,.net,Sql Server,Connection String,ormlite Servicestack,我使用的是ServiceStack OrmLite SqlServer v3.9.71,具有以下连接字符串: <add key="ConnStr" value="Data Source=my-db;Initial Catalog=Users;Integrated Security=SSPI;Connection Timeout=666"/> 我使用以下命令运行查询,返回查询需要2-3分钟: using (Db) { var result = new ResultDto(

我使用的是ServiceStack OrmLite SqlServer v3.9.71,具有以下连接字符串:

<add key="ConnStr" value="Data Source=my-db;Initial Catalog=Users;Integrated Security=SSPI;Connection Timeout=666"/>

我使用以下命令运行查询,返回查询需要2-3分钟:

using (Db)
{
    var result = new ResultDto();

    Parallel.Invoke(
       () => { result.StatOne = Db.Dictionary<DateTime, int>(query1); },
       () => { result.StatTwo = Db.Dictionary<DateTime, int>(query2); }
    );

    return result;
}
使用(Db)
{
var result=new ResultDto();
并行调用(
()=>{result.StatOne=Db.Dictionary(query1);},
()=>{result.StatTwo=Db.Dictionary(query2);}
);
返回结果;
}
在Db对象上放置断点时,我可以看到连接超时为
666
,但我不知道如何在每次运行上述命令时设置/增加命令超时,它在
30
秒后超时,这是默认超时


有什么想法吗?

可以在OrmLite中使用
或mliteConfig.CommandTimeout设置超时,作为全局配置,可以在启动时设置一次:

OrmLiteConfig.CommandTimeout = 666;
或者,您可以改为使用以下命令将CommandTimeout作用域设置为特定的db连接:

using (var db = DbFactory.Open())
{
    db.SetCommandTimeout(60);
    db.Select(...);
}

这看起来像是
命令超时
而不是
连接超时
@bummi,谢谢我现在更新了这个问题。我不熟悉OrmLite,但这可能有用吗?tnx,这是全局配置吗?你建议我在哪里设置这个?在设置容器时?有什么方法可以设置每个查询而不是全局查询?@MaYaN我已经更新了答案,以说明如何为特定请求设置它。在线程应用程序中使用db.SetCommandTimeout时要非常小心,因为在我们的例子中,它似乎会导致在其他线程上的其他连接上运行命令立即超时。设置全局设置解决了这个问题。我们花了3天时间才弄明白为什么执行1个线程有效,而当我们通过设置0将超时设置为无限时,30秒后多次超时。如果可能的话,使用全局设置可以避免很多痛苦。@Seer:您还记得您是如何在每个线程中打开连接的吗?是每个线程创建一个新的
IDbConnection
实例并设置超时,还是每个线程在共享实例上设置超时?
IDbConnection
实例不是线程安全的,在我的例子中,在尝试在不同线程中的查询之间共享它时会导致问题——我还没有尝试使用超时设置。