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

Commit dedf2e4

Browse files
committed
Check for null in all impls of SetDbValue
1 parent 6038558 commit dedf2e4

File tree

3 files changed

+22
-21
lines changed

3 files changed

+22
-21
lines changed

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,7 @@ public override long InsertAndGetLastInsertId<T>(IDbCommand dbCmd)
116116

117117
public override void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
118118
{
119-
if (fieldDef == null || fieldDef.SetValueFn == null || colIndex == NotFound) return;
120-
121-
if (dataReader.IsDBNull(colIndex))
122-
{
123-
fieldDef.SetValueFn(instance, null);
124-
return;
125-
}
119+
if (HandledDbNullValue(fieldDef, dataReader, colIndex, instance)) return;
126120

127121
object convertedValue;
128122
if (fieldDef.FieldType == typeof(DateTimeOffset))

src/ServiceStack.OrmLite.Sqlite/SqliteOrmLiteDialectProviderBase.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ public override void SetParameter(FieldDefinition fieldDef, IDbDataParameter p)
137137

138138
public override void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
139139
{
140+
if (HandledDbNullValue(fieldDef, dataReader, colIndex, instance)) return;
141+
140142
var fieldType = Nullable.GetUnderlyingType(fieldDef.FieldType) ?? fieldDef.FieldType;
141143
if (fieldType == typeof(Guid))
142144
{

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -279,22 +279,9 @@ public virtual bool ShouldQuoteValue(Type fieldType)
279279
/// </summary>
280280
public virtual void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
281281
{
282-
if (fieldDef == null || fieldDef.SetValueFn == null || colIndex == NotFound) return;
283-
if (dataReader.IsDBNull(colIndex))
284-
{
285-
if (fieldDef.IsNullable)
286-
{
287-
fieldDef.SetValueFn(instance, null);
288-
}
289-
else
290-
{
291-
fieldDef.SetValueFn(instance, fieldDef.FieldType.GetDefaultValue());
292-
}
293-
return;
294-
}
282+
if (HandledDbNullValue(fieldDef, dataReader, colIndex, instance)) return;
295283

296284
object value;
297-
298285
if (fieldDef.FieldType == typeof(Guid))
299286
{
300287
value = dataReader.GetGuid(colIndex);
@@ -314,6 +301,24 @@ public virtual void SetDbValue(FieldDefinition fieldDef, IDataReader dataReader,
314301
}
315302
}
316303

304+
public static bool HandledDbNullValue(FieldDefinition fieldDef, IDataReader dataReader, int colIndex, object instance)
305+
{
306+
if (fieldDef == null || fieldDef.SetValueFn == null || colIndex == NotFound) return true;
307+
if (dataReader.IsDBNull(colIndex))
308+
{
309+
if (fieldDef.IsNullable)
310+
{
311+
fieldDef.SetValueFn(instance, null);
312+
}
313+
else
314+
{
315+
fieldDef.SetValueFn(instance, fieldDef.FieldType.GetDefaultValue());
316+
}
317+
return true;
318+
}
319+
return false;
320+
}
321+
317322
public virtual object ConvertDbValue(object value, Type type)
318323
{
319324
if (value == null || value is DBNull) return null;

0 commit comments

Comments
 (0)