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

Commit 4ee009d

Browse files
committed
In Oracle provider fix escaping, setting numeric values, and numeric enums.
1 parent 66848ff commit 4ee009d

File tree

1 file changed

+23
-17
lines changed

1 file changed

+23
-17
lines changed

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 23 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,16 @@ public override void OnAfterInitColumnTypeMap()
7676

7777
DbTypeMap.Set<bool>(DbType.Int16, BoolColumnDefinition);
7878
DbTypeMap.Set<bool?>(DbType.Int16, BoolColumnDefinition);
79+
80+
DbTypeMap.Set<sbyte>(DbType.Int16, IntColumnDefinition);
81+
DbTypeMap.Set<sbyte?>(DbType.Int16, IntColumnDefinition);
82+
DbTypeMap.Set<ushort>(DbType.Int32, IntColumnDefinition);
83+
DbTypeMap.Set<ushort?>(DbType.Int32, IntColumnDefinition);
84+
DbTypeMap.Set<uint>(DbType.Int64, LongColumnDefinition);
85+
DbTypeMap.Set<uint?>(DbType.Int64, LongColumnDefinition);
86+
DbTypeMap.Set<ulong>(DbType.Int64, LongColumnDefinition);
87+
DbTypeMap.Set<ulong?>(DbType.Int64, LongColumnDefinition);
88+
7989
if (CompactGuid)
8090
{
8191
DbTypeMap.Set<Guid>(DbType.Binary, GuidColumnDefinition);
@@ -86,6 +96,7 @@ public override void OnAfterInitColumnTypeMap()
8696
DbTypeMap.Set<Guid>(DbType.String, GuidColumnDefinition);
8797
DbTypeMap.Set<Guid?>(DbType.String, GuidColumnDefinition);
8898
}
99+
89100
DbTypeMap.Set<DateTimeOffset>(DbType.String, DateTimeOffsetColumnDefinition);
90101
DbTypeMap.Set<DateTimeOffset?>(DbType.String, DateTimeOffsetColumnDefinition);
91102
}
@@ -361,26 +372,10 @@ public override void SetParameterValue<T>(FieldDefinition fieldDef, IDataParamet
361372

362373
protected override object GetValue<T>(FieldDefinition fieldDef, object obj)
363374
{
364-
var value = obj is T
365-
? fieldDef.GetValue(obj)
366-
: GetAnonValue<T>(fieldDef, obj);
375+
var value = base.GetValue<T>(fieldDef, obj);
367376

368377
if (value != null)
369378
{
370-
if (fieldDef.IsRefType)
371-
{
372-
//Let ADO.NET providers handle byte[]
373-
if (fieldDef.FieldType == typeof(byte[]))
374-
{
375-
return value;
376-
}
377-
return OrmLiteConfig.DialectProvider.StringSerializer.SerializeToString(value);
378-
}
379-
if (fieldDef.FieldType == typeof(TimeSpan))
380-
{
381-
var timespan = (TimeSpan)value;
382-
return timespan.Ticks;
383-
}
384379
if (fieldDef.FieldType == typeof(Guid))
385380
{
386381
var guid = (Guid)value;
@@ -1075,5 +1070,16 @@ public override string ToAddForeignKeyStatement<T, TForeign>(Expression<Func<T,
10751070
GetQuotedColumnName(referenceFieldName),
10761071
GetForeignKeyOnDeleteClause(new ForeignKeyConstraint(typeof(T), FkOptionToString(onDelete))));
10771072
}
1073+
1074+
public override string EscapeWildcards(string value)
1075+
{
1076+
if (value == null)
1077+
return null;
1078+
1079+
return value
1080+
.Replace("^", @"^^")
1081+
.Replace("_", @"^_")
1082+
.Replace("%", @"^%");
1083+
}
10781084
}
10791085
}

0 commit comments

Comments
 (0)