@@ -248,7 +248,7 @@ private static void SetParameters<T>(this IDbCommand dbCmd, object anonType, boo
248
248
249
249
p . DbType = OrmLiteConfig . DialectProvider . GetColumnDbType ( pi . PropertyType ) ;
250
250
p . Direction = ParameterDirection . Input ;
251
- p . Value = value ;
251
+ p . Value = value ?? DBNull . Value ;
252
252
dbCmd . Parameters . Add ( p ) ;
253
253
}
254
254
}
@@ -265,17 +265,22 @@ private static void SetParameters(this IDbCommand dbCmd, Dictionary<string,objec
265
265
if ( excludeNulls && value == null ) continue ;
266
266
var p = dbCmd . CreateParameter ( ) ;
267
267
p . ParameterName = kvp . Key ;
268
- p . DbType = OrmLiteConfig . DialectProvider . GetColumnDbType ( value . GetType ( ) ) ; ;
268
+
269
+ if ( value != null )
270
+ {
271
+ p . DbType = OrmLiteConfig . DialectProvider . GetColumnDbType ( value . GetType ( ) ) ;
272
+ }
273
+
269
274
p . Direction = ParameterDirection . Input ;
270
- p . Value = value ;
275
+ p . Value = value ?? DBNull . Value ;
271
276
dbCmd . Parameters . Add ( p ) ;
272
277
}
273
278
}
274
279
275
280
276
281
public static void SetFilters < T > ( this IDbCommand dbCmd , object anonType )
277
282
{
278
- dbCmd . SetFilters < T > ( anonType , false ) ;
283
+ dbCmd . SetFilters < T > ( anonType , excludeNulls : false ) ;
279
284
}
280
285
281
286
public static void ClearFilters ( this IDbCommand dbCmd )
@@ -327,7 +332,7 @@ internal static T QuerySingle<T>(this IDbCommand dbCmd, object anonType)
327
332
{
328
333
if ( IsScalar < T > ( ) ) return QueryScalar < T > ( dbCmd , anonType ) ;
329
334
330
- dbCmd . SetFilters < T > ( anonType , true ) ;
335
+ dbCmd . SetFilters < T > ( anonType , excludeNulls : false ) ;
331
336
332
337
using ( var dbReader = dbCmd . ExecuteReader ( ) )
333
338
return dbReader . ConvertTo < T > ( ) ;
@@ -337,7 +342,7 @@ internal static T QuerySingle<T>(this IDbCommand dbCmd, string sql, object anonT
337
342
{
338
343
if ( IsScalar < T > ( ) ) return QueryScalar < T > ( dbCmd , sql , anonType ) ;
339
344
340
- dbCmd . SetParameters < T > ( anonType , true ) ;
345
+ dbCmd . SetParameters < T > ( anonType , excludeNulls : false ) ;
341
346
dbCmd . CommandText = OrmLiteConfig . DialectProvider . ToSelectStatement ( typeof ( T ) , sql ) ;
342
347
343
348
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -368,7 +373,7 @@ internal static List<T> Where<T>(this IDbCommand dbCmd, object anonType)
368
373
369
374
internal static List < T > Query < T > ( this IDbCommand dbCmd , string sql , object anonType = null )
370
375
{
371
- if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , true ) ;
376
+ if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , excludeNulls : false ) ;
372
377
dbCmd . CommandText = OrmLiteConfig . DialectProvider . ToSelectStatement ( typeof ( T ) , sql ) ;
373
378
374
379
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -379,7 +384,7 @@ internal static List<T> Query<T>(this IDbCommand dbCmd, string sql, object anonT
379
384
380
385
internal static List < T > Query < T > ( this IDbCommand dbCmd , string sql , Dictionary < string , object > dict )
381
386
{
382
- if ( dict != null ) dbCmd . SetParameters ( dict , true ) ;
387
+ if ( dict != null ) dbCmd . SetParameters ( dict , excludeNulls : false ) ;
383
388
dbCmd . CommandText = OrmLiteConfig . DialectProvider . ToSelectStatement ( typeof ( T ) , sql ) ;
384
389
385
390
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -390,15 +395,15 @@ internal static List<T> Query<T>(this IDbCommand dbCmd, string sql, Dictionary<s
390
395
391
396
internal static T QueryScalar < T > ( this IDbCommand dbCmd , object anonType )
392
397
{
393
- dbCmd . SetFilters < T > ( anonType , true ) ;
398
+ dbCmd . SetFilters < T > ( anonType , excludeNulls : false ) ;
394
399
395
400
using ( var dbReader = dbCmd . ExecuteReader ( ) )
396
401
return GetScalar < T > ( dbReader ) ;
397
402
}
398
403
399
404
internal static T QueryScalar < T > ( this IDbCommand dbCmd , string sql , object anonType = null )
400
405
{
401
- if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , true ) ;
406
+ if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , excludeNulls : false ) ;
402
407
dbCmd . CommandText = OrmLiteConfig . DialectProvider . ToSelectStatement ( typeof ( T ) , sql ) ;
403
408
404
409
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -407,7 +412,7 @@ internal static T QueryScalar<T>(this IDbCommand dbCmd, string sql, object anonT
407
412
408
413
internal static List < T > SqlList < T > ( this IDbCommand dbCmd , string sql , object anonType = null )
409
414
{
410
- if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , true ) ;
415
+ if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , excludeNulls : false ) ;
411
416
dbCmd . CommandText = sql ;
412
417
413
418
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -418,7 +423,7 @@ internal static List<T> SqlList<T>(this IDbCommand dbCmd, string sql, object ano
418
423
419
424
internal static List < T > SqlList < T > ( this IDbCommand dbCmd , string sql , Dictionary < string , object > dict )
420
425
{
421
- if ( dict != null ) dbCmd . SetParameters ( dict , true ) ;
426
+ if ( dict != null ) dbCmd . SetParameters ( dict , excludeNulls : false ) ;
422
427
dbCmd . CommandText = sql ;
423
428
424
429
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -429,7 +434,7 @@ internal static List<T> SqlList<T>(this IDbCommand dbCmd, string sql, Dictionary
429
434
430
435
internal static T SqlScalar < T > ( this IDbCommand dbCmd , string sql , object anonType = null )
431
436
{
432
- if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , true ) ;
437
+ if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , excludeNulls : false ) ;
433
438
dbCmd . CommandText = sql ;
434
439
435
440
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -438,7 +443,7 @@ internal static T SqlScalar<T>(this IDbCommand dbCmd, string sql, object anonTyp
438
443
439
444
internal static T SqlScalar < T > ( this IDbCommand dbCmd , string sql , Dictionary < string , object > dict )
440
445
{
441
- if ( dict != null ) dbCmd . SetParameters ( dict , true ) ;
446
+ if ( dict != null ) dbCmd . SetParameters ( dict , excludeNulls : false ) ;
442
447
dbCmd . CommandText = sql ;
443
448
444
449
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -447,15 +452,15 @@ internal static T SqlScalar<T>(this IDbCommand dbCmd, string sql, Dictionary<str
447
452
448
453
internal static List < T > ByExampleWhere < T > ( this IDbCommand dbCmd , object anonType )
449
454
{
450
- dbCmd . SetFilters < T > ( anonType , true ) ;
455
+ dbCmd . SetFilters < T > ( anonType , excludeNulls : false ) ;
451
456
452
457
using ( var dbReader = dbCmd . ExecuteReader ( ) )
453
458
return dbReader . ConvertToList < T > ( ) ;
454
459
}
455
460
456
461
internal static List < T > QueryByExample < T > ( this IDbCommand dbCmd , string sql , object anonType = null )
457
462
{
458
- if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , true ) ;
463
+ if ( anonType != null ) dbCmd . SetParameters < T > ( anonType , excludeNulls : false ) ;
459
464
dbCmd . CommandText = OrmLiteConfig . DialectProvider . ToSelectStatement ( typeof ( T ) , sql ) ;
460
465
461
466
using ( var dbReader = dbCmd . ExecuteReader ( ) )
@@ -578,6 +583,9 @@ internal static List<T> GetFirstColumn<T>(this IDataReader reader)
578
583
while ( reader . Read ( ) )
579
584
{
580
585
var value = getValueFn ( 0 ) ;
586
+ if ( value == DBNull . Value )
587
+ value = default ( T ) ;
588
+
581
589
columValues . Add ( ( T ) value ) ;
582
590
}
583
591
return columValues ;
@@ -612,6 +620,9 @@ internal static HashSet<T> GetFirstColumnDistinct<T>(this IDataReader reader)
612
620
while ( reader . Read ( ) )
613
621
{
614
622
var value = getValueFn ( 0 ) ;
623
+ if ( value == DBNull . Value )
624
+ value = default ( T ) ;
625
+
615
626
columValues . Add ( ( T ) value ) ;
616
627
}
617
628
return columValues ;
0 commit comments