Commit a5f05794 authored by tangruixing's avatar tangruixing

Update SqlMapper.cs

fixed the "UdtTypeName property must be set for UDT parameters" error.
C#  :  .net Framework 4.5.1
Sql server 2012
parent b77e5384
...@@ -378,6 +378,7 @@ void ITypeHandler.SetValue(IDbDataParameter parameter, object value) ...@@ -378,6 +378,7 @@ void ITypeHandler.SetValue(IDbDataParameter parameter, object value)
parameter.Value = SanitizeParameterValue(value); parameter.Value = SanitizeParameterValue(value);
if (parameter is System.Data.SqlClient.SqlParameter) if (parameter is System.Data.SqlClient.SqlParameter)
{ {
((System.Data.SqlClient.SqlParameter)parameter).SqlDbType = SqlDbType.Udt;
((System.Data.SqlClient.SqlParameter)parameter).UdtTypeName = udtTypeName; ((System.Data.SqlClient.SqlParameter)parameter).UdtTypeName = udtTypeName;
} }
} }
...@@ -5454,11 +5455,11 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types) ...@@ -5454,11 +5455,11 @@ public ConstructorInfo FindConstructor(string[] names, Type[] types)
if (types[i] == typeof(byte[]) && ctorParameters[i].ParameterType.FullName == SqlMapper.LinqBinary) if (types[i] == typeof(byte[]) && ctorParameters[i].ParameterType.FullName == SqlMapper.LinqBinary)
continue; continue;
var unboxedType = Nullable.GetUnderlyingType(ctorParameters[i].ParameterType) ?? ctorParameters[i].ParameterType; var unboxedType = Nullable.GetUnderlyingType(ctorParameters[i].ParameterType) ?? ctorParameters[i].ParameterType;
if (unboxedType != types[i] if (unboxedType != types[i]
&& !(unboxedType.IsEnum() && Enum.GetUnderlyingType(unboxedType) == types[i]) && !(unboxedType.IsEnum() && Enum.GetUnderlyingType(unboxedType) == types[i])
&& !(unboxedType == typeof(char) && types[i] == typeof(string)) && !(unboxedType == typeof(char) && types[i] == typeof(string))
&& !(unboxedType.IsEnum() && types[i] == typeof(string))) && !(unboxedType.IsEnum() && types[i] == typeof(string)))
{ {
break; break;
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment