ServiceStack OrmLite命令超时

Ale*_*lex 6 c# servicestack ormlite-servicestack

使用IDbConnection.ExecuteSql时如何设置命令超时?

IDbConnection db = ConnectionFactory.OpenDbConnection();
db.ExecuteSql("...");
Run Code Online (Sandbox Code Playgroud)

如果我使用IDbCommand.ExecuteSql(见下文)方法,我可以设置命令超时,但我得到一堆关于弃用方法的警告.

IDbCommand comm = db.CreateCommand()
comm.CommandTimeout = 240;                    
comm.ExecuteSql("...");
Run Code Online (Sandbox Code Playgroud)

myt*_*thz 4

在最近的更改中,OrmLite 不再直接提供围绕IDbCommand对象的 API(这些 API 现在已在最新版本中全部内置)。

但由于 OrmLite 只是 ADO.NET 底层IDbConnectionIDbCommand接口的扩展方法,因此您可以在需要时轻松绕过 OrmLite 的扩展方法,直接使用它们,例如:

IDbConnection db = ConnectionFactory.OpenDbConnection();
IDbCommand cmd = db.CreateCommand();
cmd.CommandTimeout = 240;  
cmd.CommandText = "...";
cmd.ExecuteNonQuery();
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用以下命令设置全局 CommandTimeout:

OrmLiteConfig.CommandTimeout = 240;
Run Code Online (Sandbox Code Playgroud)

  • 如果我们想使用 db.Select 生成的 sql 该怎么办?当我们想要设置超时时,我们应该使用自定义的手写sql查询吗?@神话 (2认同)