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

Commit 4adcbdf

Browse files
committed
Use the correct parameterized type for enum flags
1 parent 120f463 commit 4adcbdf

File tree

2 files changed

+17
-4
lines changed

2 files changed

+17
-4
lines changed

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -760,9 +760,15 @@ public object GetFieldValue(FieldDefinition fieldDef, object value)
760760
if (fieldDef.FieldType.IsEnum)
761761
{
762762
var enumValue = OrmLiteConfig.DialectProvider.StringSerializer.SerializeToString(value);
763-
return enumValue != null
764-
? enumValue.Trim('"')
765-
: null;
763+
if (enumValue == null)
764+
return null;
765+
766+
enumValue = enumValue.Trim('"');
767+
long intEnum;
768+
if (Int64.TryParse(enumValue, out intEnum))
769+
return intEnum;
770+
771+
return enumValue;
766772
}
767773
if (fieldDef.FieldType == typeof (TimeSpan))
768774
{

src/ServiceStack.OrmLite/OrmLiteReadExtensions.cs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -152,7 +152,14 @@ internal static void SetParameters<T>(this IDbCommand dbCmd, object anonType, bo
152152

153153
FieldDefinition fieldDef;
154154
if (fieldMap != null && fieldMap.TryGetValue(columnName, out fieldDef))
155+
{
155156
value = dialectProvider.GetFieldValue(fieldDef, value);
157+
var valueType = value != null ? value.GetType() : null;
158+
if (valueType != null && valueType != pi.PropertyType)
159+
{
160+
p.DbType = dialectProvider.GetColumnDbType(valueType);
161+
}
162+
}
156163

157164
p.Value = value == null ?
158165
DBNull.Value
@@ -919,7 +926,7 @@ internal static List<Into> LoadListWithReferences<Into, From>(this IDbCommand db
919926
var modelDef = ModelDefinition<Into>.Definition;
920927
var fieldDefs = modelDef.AllFieldDefinitionsArray.Where(x => x.IsReference);
921928

922-
expr.Select(dialectProvider.GetQuotedColumnName(modelDef.PrimaryKey));
929+
expr.Select(dialectProvider.GetQuotedColumnName(modelDef, modelDef.PrimaryKey));
923930
var subSql = expr.ToSelectStatement();
924931

925932
foreach (var fieldDef in fieldDefs)

0 commit comments

Comments
 (0)