如何使用ServiceStack.OrmLite全局更改命令超时

时间:2015-05-01 17:02:04

标签: servicestack ormlite-servicestack

我有一个使用ServiceStackOrmLite的基于报告的网站,使用SQL Server后端。由于某些报告的持续时间,我希望全局或有选择地(通过Service - 派生类或某些属性)使运行报告的查询具有更长的CommandTimeout。我想继续使用现有代码查询报告的数据(Db.SelectDb.SqlList来电),因此我不必在每个报告中编写样板代码班级&方法

我已尝试使用AlwaysUseCommand,但这需要声明一个具有开放连接的命令。如果不在我的AppHost.Configure方法中打开连接并且从不关闭它,我就不知道如何做到这一点。如果它是一个函数指针,它会更好,但是唉。

我还查看了覆盖Db的{​​{1}}属性,但这只是返回一个打开的Service而不让我覆盖创建的命令。

似乎我的最后一个选项是创建自定义IDbConnection类,如MiniProfiler ProfiledDbConnection,但我必须实现十几种抽象方法。为了在DbCommand上设置一个属性,似乎有些过分。

因此,在DbConnection中,如何全局修改已创建的ServiceStack.OrmLite CommandTimeout

1 个答案:

答案 0 :(得分:3)

您可以使用以下内容全局更改CommandTimeout

OrmLiteConfig.CommandTimeout = NewTimeoutInSeconds;

Scoped Timeout

您还可以使用以下命令为特定数据库连接指定超时:

using (var db = dbFactory.OpenDbConnection())
{
    db.SetCommandTimeout(NewTimeoutInSeconds);
}