diff --git a/Dapper/SqlMapper.cs b/Dapper/SqlMapper.cs index d23e949a5..e5d8f8b70 100644 --- a/Dapper/SqlMapper.cs +++ b/Dapper/SqlMapper.cs @@ -463,6 +463,10 @@ public static void SetDbType(IDataParameter parameter, object value) handler = null; var nullUnderlyingType = Nullable.GetUnderlyingType(type); if (nullUnderlyingType is not null) type = nullUnderlyingType; + if (typeHandlers.TryGetValue(type, out handler)) + { + return DbType.Object; + } if (type.IsEnum && !typeMap.ContainsKey(type)) { type = Enum.GetUnderlyingType(type); @@ -479,10 +483,6 @@ public static void SetDbType(IDataParameter parameter, object value) { return DbType.Binary; } - if (typeHandlers.TryGetValue(type, out handler)) - { - return DbType.Object; - } if (typeof(IEnumerable).IsAssignableFrom(type)) { // auto-detect things like IEnumerable as a family @@ -2749,7 +2749,7 @@ private static bool IsValueTuple(Type? type) => (type?.IsValueType == true var nullType = Nullable.GetUnderlyingType(propType); bool callSanitize = false; - if ((nullType ?? propType).IsEnum) + if ((nullType ?? propType).IsEnum && handler == null) { if (nullType is not null) {