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

Commit a487963

Browse files
committed
Merge pull request #459 from BruceCowan-AI/AStartAt4044Fixes
Here are some fixes for the problems. Unfortunately, not complete.
2 parents 4122679 + 319ed16 commit a487963

File tree

5 files changed

+21
-14
lines changed

5 files changed

+21
-14
lines changed

src/ServiceStack.OrmLite.Oracle/Converters/OracleByteArrayConverter.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,6 @@ namespace ServiceStack.OrmLite.Oracle.Converters
55
{
66
public class OracleByteArrayConverter : ByteArrayConverter
77
{
8-
public override object ToDbValue(Type fieldType, object value)
9-
{
10-
return "hextoraw('" + BitConverter.ToString((byte[])value).Replace("-", "") + "')";
11-
}
12-
138
public override string ToQuotedString(Type fieldType, object value)
149
{
1510
return "hextoraw('" + BitConverter.ToString((byte[])value).Replace("-", "") + "')";

src/ServiceStack.OrmLite.Oracle/Converters/OracleDateTimeOffsetConverter.cs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System;
2+
using System.Data;
23
using ServiceStack.OrmLite.Converters;
34

45
namespace ServiceStack.OrmLite.Oracle.Converters
@@ -38,5 +39,10 @@ public override object FromDbValue(Type fieldType, object value)
3839
{
3940
return Convert.ChangeType(value, typeof(DateTimeOffset));
4041
}
42+
43+
public override void InitDbParam(IDbDataParameter p, Type fieldType)
44+
{
45+
p.DbType = DbType.String;
46+
}
4147
}
4248
}

src/ServiceStack.OrmLite.Oracle/Converters/OracleEnumConverter.cs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,18 @@ public override string ToQuotedString(Type fieldType, object value)
1212
value = fieldType.GetEnumName(value);
1313
}
1414

15-
var enumValue = DialectProvider.StringSerializer.SerializeToString(value);
16-
// Oracle stores empty strings in varchar columns as null so match that behavior here
17-
if (enumValue == null)
18-
return null;
19-
enumValue = DialectProvider.GetQuotedValue(enumValue.Trim('"'));
20-
return enumValue == "''"
21-
? "null"
22-
: enumValue;
15+
if (fieldType.IsEnum)
16+
{
17+
var enumValue = DialectProvider.StringSerializer.SerializeToString(value);
18+
// Oracle stores empty strings in varchar columns as null so match that behavior here
19+
if (enumValue == null)
20+
return null;
21+
enumValue = DialectProvider.GetQuotedValue(enumValue.Trim('"'));
22+
return enumValue == "''"
23+
? "null"
24+
: enumValue;
25+
}
26+
return base.ToQuotedString(fieldType, value);
2327
}
2428

2529
public override object ToDbValue(Type fieldType, object value)

src/ServiceStack.OrmLite.Oracle/OracleOrmLiteDialectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ public OracleOrmLiteDialectProvider(bool compactGuid, bool quoteNames, string cl
8787
//DefaultStringLength = 128;
8888

8989
ParamString = ":";
90+
// OrmLiteConfig.UseParameterizeSqlExpressions = true;
9091

9192
NamingStrategy = new OracleNamingStrategy(MaxNameLength);
9293
ExecFilter = new OracleExecFilter();
@@ -107,6 +108,7 @@ public OracleOrmLiteDialectProvider(bool compactGuid, bool quoteNames, string cl
107108
RegisterConverter<TimeSpan>(new OracleTimeSpanAsIntConverter());
108109
RegisterConverter<string>(new OracleStringConverter());
109110
RegisterConverter<char[]>(new OracleCharArrayConverter());
111+
RegisterConverter<byte[]>(new OracleByteArrayConverter());
110112

111113
RegisterConverter<long>(new OracleInt64Converter());
112114
RegisterConverter<sbyte>(new OracleSByteConverter());

src/ServiceStack.OrmLite/OrmLiteResultsFilterExtensions.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,8 @@ public static IList ConvertToList(this IDbCommand dbCmd, Type refType, string sq
103103
public static IDbDataParameter PopulateWith(this IDbDataParameter to, IDbDataParameter from)
104104
{
105105
to.ParameterName = from.ParameterName;
106-
to.Value = from.Value;
107106
to.DbType = from.DbType;
107+
to.Value = from.Value;
108108

109109
if (from.Precision != default(byte))
110110
to.Precision = from.Precision;

0 commit comments

Comments
 (0)