使用IDbConnection.ExecuteSql时如何设置命令超时?
IDbConnection db = ConnectionFactory.OpenDbConnection();
db.ExecuteSql("...");
如果我使用IDbCommand.ExecuteSql(见下文)方法,我可以设置命令超时,但是我收到一堆关于弃用方法的警告。
IDbCommand comm = db.CreateCommand()
comm.CommandTimeout = 240;
comm.ExecuteSql("...");
答案 0 :(得分:4)
使用最新的更改,OrmLite不再直接在IDbCommand
对象周围提供API(现在所有内容都在最新版本中)。
但是,由于OrmLite只是ADO.NET底层IDbConnection和IDbCommand接口的扩展方法,因此您可以在需要时轻松绕过OrmLite的扩展方法,并直接使用它们,例如:< / p>
IDbConnection db = ConnectionFactory.OpenDbConnection();
IDbCommand cmd = db.CreateCommand();
cmd.CommandTimeout = 240;
cmd.CommandText = "...";
cmd.ExecuteNonQuery();
或者,您可以使用以下命令设置全局CommandTimeout:
OrmLiteConfig.CommandTimeout = 240;
答案 1 :(得分:4)
派对有点晚了,正如你在评论中看到的那样,我确实遇到了这个问题。我的解决方案是扩展神话的建议并创建一个新的扩展方法:
public static partial class IDbConnectionExtensionMethods
{
public static List<T> Query<T>(this IDbConnection self, string sql, int commandTimeout)
{
List<T> results = null;
self.Exec((dbCmd) =>
{
dbCmd.CommandTimeout = commandTimeout;
dbCmd.CommandText = sql;
using (var reader = dbCmd.ExecuteReader())
{
results = reader.ConvertToList<T>();
}
});
return results;
} // eo Query<T>
} // eo class IDbConnectionExtensionMethods