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

Commit 6f2f69e

Browse files
committed
Add GetConverterBestMatch to IOrmLiteDialectProvider
1 parent fd88e79 commit 6f2f69e

File tree

2 files changed

+20
-14
lines changed

2 files changed

+20
-14
lines changed

src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,15 @@ public interface IOrmLiteDialectProvider
2626

2727
IOrmLiteExecFilter ExecFilter { get; set; }
2828

29-
IOrmLiteConverter GetConverter(Type forType);
29+
/// <summary>
30+
/// Gets the explicit Converter registered for a specific type
31+
/// </summary>
32+
IOrmLiteConverter GetConverter(Type type);
33+
34+
/// <summary>
35+
/// Return best matching converter, falling back to Enum, Value or Ref Type Converters
36+
/// </summary>
37+
IOrmLiteConverter GetConverterBestMatch(Type type);
3038

3139
string ParamString { get; set; }
3240

src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -149,13 +149,13 @@ public string GetColumnTypeDefinition(Type columnType, int? fieldLength, int? sc
149149
[Obsolete("Use GetConverter().DbType")]
150150
public virtual DbType GetColumnDbType(Type columnType)
151151
{
152-
var converter = GetConverterForType(columnType);
152+
var converter = GetConverterBestMatch(columnType);
153153
return converter.DbType;
154154
}
155155

156156
public virtual void InitDbParam(IDbDataParameter dbParam, Type columnType)
157157
{
158-
var converter = GetConverterForType(columnType);
158+
var converter = GetConverterBestMatch(columnType);
159159
converter.InitDbParam(dbParam, columnType);
160160
}
161161

@@ -270,20 +270,18 @@ public IOrmLiteConverter GetConverter(Type type)
270270
: null;
271271
}
272272

273-
public IOrmLiteConverter GetConverterForType(Type type)
273+
public IOrmLiteConverter GetConverterBestMatch(Type type)
274274
{
275-
var converter = type.IsEnum
276-
? EnumConverter
277-
: GetConverter(type);
275+
var converter = GetConverter(type);
276+
if (converter != null)
277+
return converter;
278278

279-
if (converter == null)
280-
{
281-
converter = type.IsValueType
282-
? (IOrmLiteConverter)ValueTypeConverter
283-
: ReferenceTypeConverter;
284-
}
279+
if (type.IsEnum)
280+
return EnumConverter;
285281

286-
return converter;
282+
return type.IsValueType
283+
? (IOrmLiteConverter)ValueTypeConverter
284+
: ReferenceTypeConverter;
287285
}
288286

289287
public virtual bool ShouldQuoteValue(Type fieldType)

0 commit comments

Comments
 (0)