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

Commit

Permalink
Add GetConverterBestMatch to IOrmLiteDialectProvider
Browse files Browse the repository at this point in the history
  • Loading branch information
mythz committed Nov 24, 2015
1 parent fd88e79 commit 6f2f69e
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 14 deletions.
10 changes: 9 additions & 1 deletion src/ServiceStack.OrmLite/IOrmLiteDialectProvider.cs
Expand Up @@ -26,7 +26,15 @@ public interface IOrmLiteDialectProvider

IOrmLiteExecFilter ExecFilter { get; set; }

IOrmLiteConverter GetConverter(Type forType);
/// <summary>
/// Gets the explicit Converter registered for a specific type
/// </summary>
IOrmLiteConverter GetConverter(Type type);

/// <summary>
/// Return best matching converter, falling back to Enum, Value or Ref Type Converters
/// </summary>
IOrmLiteConverter GetConverterBestMatch(Type type);

string ParamString { get; set; }

Expand Down
24 changes: 11 additions & 13 deletions src/ServiceStack.OrmLite/OrmLiteDialectProviderBase.cs
Expand Up @@ -149,13 +149,13 @@ public string GetColumnTypeDefinition(Type columnType, int? fieldLength, int? sc
[Obsolete("Use GetConverter().DbType")]
public virtual DbType GetColumnDbType(Type columnType)
{
var converter = GetConverterForType(columnType);
var converter = GetConverterBestMatch(columnType);
return converter.DbType;
}

public virtual void InitDbParam(IDbDataParameter dbParam, Type columnType)
{
var converter = GetConverterForType(columnType);
var converter = GetConverterBestMatch(columnType);
converter.InitDbParam(dbParam, columnType);
}

Expand Down Expand Up @@ -270,20 +270,18 @@ public IOrmLiteConverter GetConverter(Type type)
: null;
}

public IOrmLiteConverter GetConverterForType(Type type)
public IOrmLiteConverter GetConverterBestMatch(Type type)
{
var converter = type.IsEnum
? EnumConverter
: GetConverter(type);
var converter = GetConverter(type);
if (converter != null)
return converter;

if (converter == null)
{
converter = type.IsValueType
? (IOrmLiteConverter)ValueTypeConverter
: ReferenceTypeConverter;
}
if (type.IsEnum)
return EnumConverter;

return converter;
return type.IsValueType
? (IOrmLiteConverter)ValueTypeConverter
: ReferenceTypeConverter;
}

public virtual bool ShouldQuoteValue(Type fieldType)
Expand Down

0 comments on commit 6f2f69e

Please sign in to comment.