ServiceStack OrmLite命令超时

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

IDbConnection db = ConnectionFactory.OpenDbConnection(); db.ExecuteSql("..."); 

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

 IDbCommand comm = db.CreateCommand() comm.CommandTimeout = 240; comm.ExecuteSql("..."); 

使用最新的更改,OrmLite不再直接在IDbCommand对象周围提供API(现在所有这些都在最新版本中内部)。

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

 IDbConnection db = ConnectionFactory.OpenDbConnection(); IDbCommand cmd = db.CreateCommand(); cmd.CommandTimeout = 240; cmd.CommandText = "..."; cmd.ExecuteNonQuery(); 

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

 OrmLiteConfig.CommandTimeout = 240; 

派对有点晚了,正如你在评论中看到的那样,我已经遇到了这个问题。 我的解决方案是扩展神话的建议并创建一个新的扩展方法:

 public static partial class IDbConnectionExtensionMethods { public static List Query(this IDbConnection self, string sql, int commandTimeout) { List results = null; self.Exec((dbCmd) => { dbCmd.CommandTimeout = commandTimeout; dbCmd.CommandText = sql; using (var reader = dbCmd.ExecuteReader()) { results = reader.ConvertToList(); } }); return results; } // eo Query } // eo class IDbConnectionExtensionMethods