Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 8c8b943

Browse files
committed
Support for CommandTimeout
Support for CommandTimeout
1 parent 743dd2c commit 8c8b943

File tree

7 files changed

+45
-13
lines changed

7 files changed

+45
-13
lines changed

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -181,7 +181,7 @@ public override IDbCommand CreateParameterizedInsertStatement(object objWithProp
181181
var modelDef = GetModel(objWithProperties.GetType());
182182

183183
var dbCommand = connection.CreateCommand();
184-
184+
dbCommand.CommandTimeout = OrmLiteConfig.CommandTimeout;
185185
foreach (var fieldDef in modelDef.FieldDefinitions)
186186
{
187187
if (fieldDef.IsComputed) continue;

src/ServiceStack.OrmLite/Expressions/ReadConnectionExtensions.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public static T Exec<T>(this IDbConnection dbConn, Func<IDbCommand, T> filter)
2727
using (var dbCmd = dbConn.CreateCommand())
2828
{
2929
dbCmd.Transaction = (ormLiteDbConn != null) ? ormLiteDbConn.Transaction : OrmLiteConfig.TSTransaction;
30-
30+
dbCmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
3131
var ret = filter(dbCmd);
3232
LastCommandText = dbCmd.CommandText;
3333
return ret;
@@ -51,6 +51,7 @@ public static void Exec(this IDbConnection dbConn, Action<IDbCommand> filter)
5151
using (var dbCmd = dbConn.CreateCommand())
5252
{
5353
dbCmd.Transaction = (ormLiteDbConn != null) ? ormLiteDbConn.Transaction : OrmLiteConfig.TSTransaction;
54+
dbCmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
5455

5556
filter(dbCmd);
5657
LastCommandText = dbCmd.CommandText;
@@ -74,6 +75,7 @@ public static IEnumerable<T> ExecLazy<T>(this IDbConnection dbConn, Func<IDbComm
7475
using (var dbCmd = dbConn.CreateCommand())
7576
{
7677
dbCmd.Transaction = (ormLiteDbConn != null) ? ormLiteDbConn.Transaction : OrmLiteConfig.TSTransaction;
78+
dbCmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
7779

7880
var results = filter(dbCmd);
7981
LastCommandText = dbCmd.CommandText;

src/ServiceStack.OrmLite/OrmLiteConfig.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,25 @@ namespace ServiceStack.OrmLite
1818
public static class OrmLiteConfig
1919
{
2020
public const string IdField = "Id";
21+
22+
private const int defaultCommandTimeout = 30;
23+
private static int? commandTimeout;
24+
[ThreadStatic] public static int? TSCommandTimeout;
25+
public static int CommandTimeout
26+
{
27+
get
28+
{
29+
if (TSCommandTimeout != null)
30+
return TSCommandTimeout.Value;
31+
if (commandTimeout != null)
32+
return commandTimeout.Value;
33+
return defaultCommandTimeout;
34+
}
35+
set
36+
{
37+
commandTimeout = value;
38+
}
39+
}
2140

2241
[ThreadStatic] public static IOrmLiteDialectProvider TSDialectProvider;
2342
[ThreadStatic] public static IDbTransaction TSTransaction;

src/ServiceStack.OrmLite/OrmLiteConnection.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ public IDbCommand CreateCommand()
7979

8080
var cmd = DbConnection.CreateCommand();
8181
if(Transaction != null) { cmd.Transaction = Transaction; }
82+
cmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
8283
return cmd;
8384
}
8485

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -520,7 +520,8 @@ public virtual IDbCommand CreateParameterizedInsertStatement(object objWithPrope
520520
var sbColumnValues = new StringBuilder();
521521
var modelDef = objWithProperties.GetType().GetModelDefinition();
522522

523-
var command = connection.CreateCommand();
523+
var command = connection.CreateCommand();
524+
command.CommandTimeout = OrmLiteConfig.CommandTimeout;
524525

525526
foreach (var fieldDef in modelDef.FieldDefinitions)
526527
{
@@ -674,8 +675,8 @@ public virtual IDbCommand CreateParameterizedUpdateStatement(object objWithPrope
674675
var sql = new StringBuilder();
675676
var modelDef = objWithProperties.GetType().GetModelDefinition();
676677

677-
var command = connection.CreateCommand();
678-
678+
var command = connection.CreateCommand();
679+
command.CommandTimeout = OrmLiteConfig.CommandTimeout;
679680
foreach (var fieldDef in modelDef.FieldDefinitions)
680681
{
681682
try

src/ServiceStack.OrmLite/OrmLitePersistenceProvider.cs

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,17 @@ public OrmLitePersistenceProvider(IDbConnection connection)
5252
this.DisposeConnection = false;
5353
}
5454

55+
private IDbCommand CreateCommand()
56+
{
57+
var cmd = this.Connection.CreateCommand();
58+
cmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
59+
return cmd;
60+
}
61+
5562
public T GetById<T>(object id)
5663
where T : class, new()
5764
{
58-
using (var dbCmd = this.Connection.CreateCommand())
65+
using (var dbCmd = CreateCommand())
5966
{
6067
return dbCmd.GetByIdOrDefault<T>(id);
6168
}
@@ -64,7 +71,7 @@ public T GetById<T>(object id)
6471
public IList<T> GetByIds<T>(ICollection ids)
6572
where T : class, new()
6673
{
67-
using (var dbCmd = this.Connection.CreateCommand())
74+
using (var dbCmd = CreateCommand())
6875
{
6976
return dbCmd.GetByIds<T>(ids);
7077
}
@@ -73,7 +80,7 @@ public IList<T> GetByIds<T>(ICollection ids)
7380
public T Store<T>(T entity)
7481
where T : class, new()
7582
{
76-
using (var dbCmd = this.Connection.CreateCommand())
83+
using (var dbCmd = CreateCommand())
7784
{
7885
return InsertOrUpdate(dbCmd, entity);
7986
}
@@ -99,7 +106,7 @@ private static T InsertOrUpdate<T>(IDbCommand dbCmd, T entity)
99106
public void StoreAll<TEntity>(IEnumerable<TEntity> entities)
100107
where TEntity : class, new()
101108
{
102-
using (var dbCmd = this.Connection.CreateCommand())
109+
using (var dbCmd = CreateCommand())
103110
using (var dbTrans = this.Connection.BeginTransaction())
104111
{
105112
foreach (var entity in entities)
@@ -113,31 +120,31 @@ public void StoreAll<TEntity>(IEnumerable<TEntity> entities)
113120
public void Delete<T>(T entity)
114121
where T : class, new()
115122
{
116-
using (var dbCmd = this.Connection.CreateCommand())
123+
using (var dbCmd = CreateCommand())
117124
{
118125
dbCmd.Delete(entity);
119126
}
120127
}
121128

122129
public void DeleteById<T>(object id) where T : class, new()
123130
{
124-
using (var dbCmd = this.Connection.CreateCommand())
131+
using (var dbCmd = CreateCommand())
125132
{
126133
dbCmd.DeleteById<T>(id);
127134
}
128135
}
129136

130137
public void DeleteByIds<T>(ICollection ids) where T : class, new()
131138
{
132-
using (var dbCmd = this.Connection.CreateCommand())
139+
using (var dbCmd = this.CreateCommand())
133140
{
134141
dbCmd.DeleteByIds<T>(ids);
135142
}
136143
}
137144

138145
public void DeleteAll<TEntity>() where TEntity : class, new()
139146
{
140-
using (var dbCmd = this.Connection.CreateCommand())
147+
using (var dbCmd = CreateCommand())
141148
{
142149
dbCmd.DeleteAll<TEntity>();
143150
}

src/ServiceStack.OrmLite/OrmLiteReadExtensions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,15 @@ private static void LogDebug(string fmt, params object[] args)
4545
internal static IDataReader ExecReader(this IDbCommand dbCmd, string sql)
4646
{
4747
LogDebug(sql);
48+
dbCmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
4849
dbCmd.CommandText = sql;
4950
return dbCmd.ExecuteReader();
5051
}
5152

5253
internal static IDataReader ExecReader(this IDbCommand dbCmd, string sql, IEnumerable<IDataParameter> parameters)
5354
{
5455
LogDebug(sql);
56+
dbCmd.CommandTimeout = OrmLiteConfig.CommandTimeout;
5557
dbCmd.CommandText = sql;
5658
dbCmd.Parameters.Clear();
5759

0 commit comments

Comments
 (0)