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

Commit 6f33977

Browse files
committed
Ensure all OrmLiteReadApi's using q.ToSelectStatement() also pass q.Params
1 parent f6654a6 commit 6f33977

File tree

3 files changed

+59
-27
lines changed

3 files changed

+59
-27
lines changed

src/ServiceStack.OrmLite/OrmLiteReadApi.cs

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -268,11 +268,11 @@ public static List<T> Column<T>(this IDbConnection dbConn, ISqlExpression query)
268268

269269
/// <summary>
270270
/// Returns the first column in a List using a SqlFormat query. E.g:
271-
/// <para>db.ColumnLazy&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new { age = 27 })</para>
271+
/// <para>db.Column&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new[] { db.CreateParam("age",27) })</para>
272272
/// </summary>
273-
public static IEnumerable<T> ColumnLazy<T>(this IDbConnection dbConn, string sql, object anonType = null)
273+
public static List<T> Column<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
274274
{
275-
return dbConn.ExecLazy(dbCmd => dbCmd.ColumnLazy<T>(sql, anonType));
275+
return dbConn.Exec(dbCmd => dbCmd.Column<T>(sql, sqlParams));
276276
}
277277

278278
/// <summary>
@@ -281,25 +281,34 @@ public static IEnumerable<T> ColumnLazy<T>(this IDbConnection dbConn, string sql
281281
/// </summary>
282282
public static IEnumerable<T> ColumnLazy<T>(this IDbConnection dbConn, ISqlExpression query)
283283
{
284-
return dbConn.ExecLazy(dbCmd => dbCmd.ColumnLazy<T>(query.ToSelectStatement()));
284+
return dbConn.ExecLazy(dbCmd => dbCmd.ColumnLazy<T>(query.ToSelectStatement(), query.Params));
285285
}
286286

287287
/// <summary>
288288
/// Returns the first column in a List using a SqlFormat query. E.g:
289-
/// <para>db.Column&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new { age = 27 })</para>
289+
/// <para>db.ColumnLazy&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new[] { db.CreateParam("age",27) })</para>
290290
/// </summary>
291-
public static List<T> Column<T>(this IDbConnection dbConn, string sql, object anonType = null)
291+
public static IEnumerable<T> ColumnLazy<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
292292
{
293-
return dbConn.Exec(dbCmd => dbCmd.Column<T>(sql, anonType));
293+
return dbConn.ExecLazy(dbCmd => dbCmd.ColumnLazy<T>(sql, sqlParams));
294294
}
295295

296296
/// <summary>
297297
/// Returns the first column in a List using a SqlFormat query. E.g:
298-
/// <para>db.Column&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new[] { db.CreateParam("age",27) })</para>
298+
/// <para>db.ColumnLazy&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new { age = 27 })</para>
299299
/// </summary>
300-
public static List<T> Column<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
300+
public static IEnumerable<T> ColumnLazy<T>(this IDbConnection dbConn, string sql, object anonType = null)
301301
{
302-
return dbConn.Exec(dbCmd => dbCmd.Column<T>(sql, sqlParams));
302+
return dbConn.ExecLazy(dbCmd => dbCmd.ColumnLazy<T>(sql, anonType));
303+
}
304+
305+
/// <summary>
306+
/// Returns the first column in a List using a SqlFormat query. E.g:
307+
/// <para>db.Column&lt;string&gt;("SELECT LastName FROM Person WHERE Age = @age", new { age = 27 })</para>
308+
/// </summary>
309+
public static List<T> Column<T>(this IDbConnection dbConn, string sql, object anonType = null)
310+
{
311+
return dbConn.Exec(dbCmd => dbCmd.Column<T>(sql, anonType));
303312
}
304313

305314
/// <summary>
@@ -353,7 +362,16 @@ public static HashSet<T> ColumnDistinctFmt<T>(this IDbConnection dbConn, string
353362
/// </summary>
354363
public static Dictionary<K, List<V>> Lookup<K, V>(this IDbConnection dbConn, ISqlExpression sqlExpression)
355364
{
356-
return dbConn.Exec(dbCmd => dbCmd.Lookup<K, V>(sqlExpression.ToSelectStatement()));
365+
return dbConn.Exec(dbCmd => dbCmd.Lookup<K, V>(sqlExpression.ToSelectStatement(), sqlExpression.Params));
366+
}
367+
368+
/// <summary>
369+
/// Returns an Dictionary&lt;K, List&lt;V&gt;&gt; grouping made from the first two columns using an parameterized query. E.g:
370+
/// <para>db.Lookup&lt;int, string&gt;("SELECT Age, LastName FROM Person WHERE Age &lt; @age", new[] { db.CreateParam("age",50) })</para>
371+
/// </summary>
372+
public static Dictionary<K, List<V>> Lookup<K, V>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
373+
{
374+
return dbConn.Exec(dbCmd => dbCmd.Lookup<K, V>(sql, sqlParams));
357375
}
358376

359377
/// <summary>
@@ -467,20 +485,20 @@ public static List<T> SqlList<T>(this IDbConnection dbConn, ISqlExpression sqlEx
467485

468486
/// <summary>
469487
/// Returns results from an arbitrary parameterized raw sql query. E.g:
470-
/// <para>db.SqlList&lt;Person&gt;("EXEC GetRockstarsAged @age", new { age = 50 })</para>
488+
/// <para>db.SqlList&lt;Person&gt;("EXEC GetRockstarsAged @age", new[] { db.CreateParam("age",50) })</para>
471489
/// </summary>
472-
public static List<T> SqlList<T>(this IDbConnection dbConn, string sql, object anonType = null)
490+
public static List<T> SqlList<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
473491
{
474-
return dbConn.Exec(dbCmd => dbCmd.SqlList<T>(sql, anonType));
492+
return dbConn.Exec(dbCmd => dbCmd.SqlList<T>(sql, sqlParams));
475493
}
476494

477495
/// <summary>
478496
/// Returns results from an arbitrary parameterized raw sql query. E.g:
479-
/// <para>db.SqlList&lt;Person&gt;("EXEC GetRockstarsAged @age", new[] { db.CreateParam("age",50) })</para>
497+
/// <para>db.SqlList&lt;Person&gt;("EXEC GetRockstarsAged @age", new { age = 50 })</para>
480498
/// </summary>
481-
public static List<T> SqlList<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
499+
public static List<T> SqlList<T>(this IDbConnection dbConn, string sql, object anonType = null)
482500
{
483-
return dbConn.Exec(dbCmd => dbCmd.SqlList<T>(sql, sqlParams));
501+
return dbConn.Exec(dbCmd => dbCmd.SqlList<T>(sql, anonType));
484502
}
485503

486504
/// <summary>
@@ -521,20 +539,20 @@ public static List<T> SqlColumn<T>(this IDbConnection dbConn, ISqlExpression sql
521539

522540
/// <summary>
523541
/// Returns the first column in a List using a parameterized query. E.g:
524-
/// <para>db.SqlColumn&lt;string&gt;("SELECT LastName FROM Person WHERE Age &lt; @age", new { age = 50 })</para>
542+
/// <para>db.SqlColumn&lt;string&gt;("SELECT LastName FROM Person WHERE Age &lt; @age", new[] { db.CreateParam("age",50) })</para>
525543
/// </summary>
526-
public static List<T> SqlColumn<T>(this IDbConnection dbConn, string sql, object anonType = null)
544+
public static List<T> SqlColumn<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
527545
{
528-
return dbConn.Exec(dbCmd => dbCmd.SqlColumn<T>(sql, anonType));
546+
return dbConn.Exec(dbCmd => dbCmd.SqlColumn<T>(sql, sqlParams));
529547
}
530548

531549
/// <summary>
532550
/// Returns the first column in a List using a parameterized query. E.g:
533-
/// <para>db.SqlColumn&lt;string&gt;("SELECT LastName FROM Person WHERE Age &lt; @age", new[] { db.CreateParam("age",50) })</para>
551+
/// <para>db.SqlColumn&lt;string&gt;("SELECT LastName FROM Person WHERE Age &lt; @age", new { age = 50 })</para>
534552
/// </summary>
535-
public static List<T> SqlColumn<T>(this IDbConnection dbConn, string sql, IEnumerable<IDbDataParameter> sqlParams)
553+
public static List<T> SqlColumn<T>(this IDbConnection dbConn, string sql, object anonType = null)
536554
{
537-
return dbConn.Exec(dbCmd => dbCmd.SqlColumn<T>(sql, sqlParams));
555+
return dbConn.Exec(dbCmd => dbCmd.SqlColumn<T>(sql, anonType));
538556
}
539557

540558
/// <summary>

src/ServiceStack.OrmLite/OrmLiteReadCommandExtensions.cs

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -546,9 +546,18 @@ internal static IEnumerable<T> SelectLazy<T>(this IDbCommand dbCmd, string sql,
546546
}
547547
}
548548

549-
internal static IEnumerable<T> ColumnLazy<T>(this IDbCommand dbCmd, string sql, object anonType = null)
549+
internal static IEnumerable<T> ColumnLazy<T>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams)
550+
{
551+
foreach (var p in dbCmd.SetParameters(sqlParams).ColumnLazy<T>(sql)) yield return p;
552+
}
553+
554+
internal static IEnumerable<T> ColumnLazy<T>(this IDbCommand dbCmd, string sql, object anonType)
555+
{
556+
foreach (var p in dbCmd.SetParameters<T>(anonType, excludeDefaults: false).ColumnLazy<T>(sql)) yield return p;
557+
}
558+
559+
private static IEnumerable<T> ColumnLazy<T>(this IDbCommand dbCmd, string sql)
550560
{
551-
if (anonType != null) dbCmd.SetParameters<T>(anonType, excludeDefaults: false);
552561
var dialectProvider = dbCmd.GetDialectProvider();
553562
dbCmd.CommandText = dialectProvider.ToSelectStatement(typeof(T), sql);
554563

@@ -565,11 +574,11 @@ internal static IEnumerable<T> ColumnLazy<T>(this IDbCommand dbCmd, string sql,
565574
{
566575
while (reader.Read())
567576
{
568-
var value = dialectProvider.ConvertDbValue(reader.GetValue(0), typeof(T));
577+
var value = dialectProvider.ConvertDbValue(reader.GetValue(0), typeof (T));
569578
if (value == DBNull.Value)
570579
yield return default(T);
571580
else
572-
yield return (T)value;
581+
yield return (T) value;
573582
}
574583
}
575584
}

src/ServiceStack.OrmLite/OrmLiteResultsFilterExtensions.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -322,6 +322,11 @@ internal static Dictionary<K, V> Dictionary<K, V>(this IDbCommand dbCmd, ISqlExp
322322
}
323323
}
324324

325+
internal static Dictionary<K, List<V>> Lookup<K, V>(this IDbCommand dbCmd, string sql, IEnumerable<IDbDataParameter> sqlParams)
326+
{
327+
return dbCmd.SetParameters(sqlParams).Lookup<K, V>(sql);
328+
}
329+
325330
internal static Dictionary<K, List<V>> Lookup<K, V>(this IDbCommand dbCmd, string sql = null)
326331
{
327332
if (sql != null)

0 commit comments

Comments
 (0)