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

Commit 2ce92dd

Browse files
committed
refactor ConvertToValueTuple to only use 1 dictionary lookup
1 parent 6f3aa0a commit 2ce92dd

File tree

1 file changed

+7
-8
lines changed

1 file changed

+7
-8
lines changed

src/ServiceStack.OrmLite/OrmLiteUtils.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -155,27 +155,26 @@ public static T ConvertToValueTuple<T>(this IDataReader reader, object[] values,
155155
for (var i = 0; i < reader.FieldCount; i++)
156156
{
157157
var itemName = "Item" + (i + 1);
158-
var field = typeFields.GetPublicField(itemName);
158+
typeFields.FieldsMap.TryGetValue(itemName, out TypeFieldInfo field);
159159
if (field == null) break;
160160

161-
var fieldSetFn = typeFields.GetPublicSetterRef(itemName);
162-
163161
var dbValue = values != null
164162
? values[i]
165163
: reader.GetValue(i);
166164

167165
if (dbValue == null)
168166
continue;
169167

170-
if (dbValue.GetType() == field.FieldType)
168+
var fieldType = field.FieldInfo.FieldType;
169+
if (dbValue.GetType() == fieldType)
171170
{
172-
fieldSetFn(ref row, dbValue);
171+
field.PublicSetterRef(ref row, dbValue);
173172
}
174173
else
175174
{
176-
var converter = dialectProvider.GetConverter(field.FieldType);
177-
var fieldValue = converter.FromDbValue(field.FieldType, dbValue);
178-
fieldSetFn(ref row, fieldValue);
175+
var converter = dialectProvider.GetConverter(fieldType);
176+
var fieldValue = converter.FromDbValue(fieldType, dbValue);
177+
field.PublicSetterRef(ref row, fieldValue);
179178
}
180179
}
181180
return (T)row;

0 commit comments

Comments
 (0)