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

Commit d6ee33e

Browse files
committed
Update IOrmLiteConverter.GetValue() to handle retrieving value from object[] values
1 parent 9856f1a commit d6ee33e

File tree

3 files changed

+25
-7
lines changed

3 files changed

+25
-7
lines changed

src/ServiceStack.OrmLite.Sqlite/Converters/SqliteDateTimeConverter.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -59,16 +59,19 @@ public override object FromDbValue(Type fieldType, object value)
5959
return base.FromDbValue(dateTime);
6060
}
6161

62-
public override object GetValue(IDataReader reader, int columnIndex)
62+
public override object GetValue(IDataReader reader, int columnIndex, object[] values)
6363
{
6464
try
6565
{
66+
if (values != null && values[columnIndex] == DBNull.Value)
67+
return null;
68+
6669
return reader.GetDateTime(columnIndex);
6770
}
6871
catch (Exception ex)
6972
{
70-
var value = reader.GetValue(columnIndex);
71-
if (value == DBNull.Value)
73+
var value = base.GetValue(reader, columnIndex, values);
74+
if (value == null)
7275
return null;
7376

7477
var dateStr = value as string;

src/ServiceStack.OrmLite.Sqlite/Converters/SqliteGuidConverter.cs

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,19 @@ public override string ToQuotedString(Type fieldType, object value)
2020
return fmt;
2121
}
2222

23-
public override object GetValue(IDataReader reader, int columnIndex)
23+
public override object GetValue(IDataReader reader, int columnIndex, object[] values)
2424
{
25+
if (values != null)
26+
{
27+
if (values[columnIndex] == DBNull.Value)
28+
return null;
29+
}
30+
else
31+
{
32+
if (reader.IsDBNull(columnIndex))
33+
return null;
34+
}
35+
2536
return reader.GetGuid(columnIndex);
2637
}
2738
}

src/ServiceStack.OrmLite/IOrmLiteConverter.cs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public interface IOrmLiteConverter
1919

2020
object FromDbValue(Type fieldType, object value);
2121

22-
object GetValue(IDataReader reader, int columnIndex);
22+
object GetValue(IDataReader reader, int columnIndex, object[] values);
2323
}
2424

2525
public interface IHasColumnDefinitionLength
@@ -87,9 +87,13 @@ public virtual object FromDbValue(Type fieldType, object value)
8787
/// <summary>
8888
/// Retrieve Value from ADO.NET IDataReader. Defaults to reader.GetValue()
8989
/// </summary>
90-
public virtual object GetValue(IDataReader reader, int columnIndex)
90+
public virtual object GetValue(IDataReader reader, int columnIndex, object[] values)
9191
{
92-
return reader.GetValue(columnIndex);
92+
var value = values != null
93+
? values[columnIndex]
94+
: reader.GetValue(columnIndex);
95+
96+
return value == DBNull.Value ? null : value;
9397
}
9498
}
9599

0 commit comments

Comments
 (0)