我有一个使用ServiceStack
和OrmLite
的基于报告的网站,使用SQL Server后端。由于某些报告的持续时间,我希望全局或有选择地(通过Service
- 派生类或某些属性)使运行报告的查询具有更长的CommandTimeout
。我想继续使用现有代码查询报告的数据(Db.Select
,Db.SqlList
来电),因此我不必在每个报告中编写样板代码班级&方法
我已尝试使用AlwaysUseCommand
,但这需要声明一个具有开放连接的命令。如果不在我的AppHost.Configure
方法中打开连接并且从不关闭它,我就不知道如何做到这一点。如果它是一个函数指针,它会更好,但是唉。
我还查看了覆盖Db
的{{1}}属性,但这只是返回一个打开的Service
而不让我覆盖创建的命令。
似乎我的最后一个选项是创建自定义IDbConnection
类,如MiniProfiler ProfiledDbConnection,但我必须实现十几种抽象方法。为了在DbCommand上设置一个属性,似乎有些过分。
因此,在DbConnection
中,如何全局修改已创建的ServiceStack.OrmLite
CommandTimeout
?
答案 0 :(得分:3)
您可以使用以下内容全局更改CommandTimeout
OrmLiteConfig.CommandTimeout = NewTimeoutInSeconds;
您还可以使用以下命令为特定数据库连接指定超时:
using (var db = dbFactory.OpenDbConnection())
{
db.SetCommandTimeout(NewTimeoutInSeconds);
}