You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Don't specify dbtype for DateTime et al; fixed npgsql 6 issue (#1723)
* context: #1716#1716
- change type-map to allow nullable
- change DateTime/TimeSpan to null
- do not specify DbType for null
- semi-breaking change: swap GetDbType to SetDbType, noting that it is marked [Obsolete] and internal-use-only
- semi-breaking change: make LookupDbType return nullable (same internal-use/[Obsolete])
* add test for Npgsql 6.0.0-rc.1
* try list parameters (like arrays)
* never assign -1 (sentinel) as the .DbType
* postgres tests
@@ -2563,22 +2571,22 @@ internal static Action<IDbCommand, object> CreateParamInfoGenerator(Identity ide
2563
2571
il.Emit(OpCodes.Ldstr,prop.Name);// stack is now [parameters] [parameters] [parameter] [parameter] [name]
2564
2572
il.EmitCall(OpCodes.Callvirt,typeof(IDataParameter).GetProperty(nameof(IDataParameter.ParameterName)).GetSetMethod(),null);// stack is now [parameters] [parameters] [parameter]
il.Emit(OpCodes.Dup);// stack is now [parameters] [[parameters]] [parameter] [parameter]
2569
-
if(dbType==DbType.Object&&prop.PropertyType==typeof(object))// includes dynamic
2577
+
if(dbType.GetValueOrDefault()==DbType.Object&&prop.PropertyType==typeof(object))// includes dynamic
2570
2578
{
2571
2579
// look it up from the param value
2572
2580
il.Emit(OpCodes.Ldloc,typedParameterLocal);// stack is now [parameters] [[parameters]] [parameter] [parameter] [typed-param]
2573
2581
il.Emit(callOpCode,prop.GetGetMethod());// stack is [parameters] [[parameters]] [parameter] [parameter] [object-value]
2574
-
il.Emit(OpCodes.Call,typeof(SqlMapper).GetMethod(nameof(SqlMapper.GetDbType),BindingFlags.Static|BindingFlags.Public));// stack is now [parameters] [[parameters]] [parameter] [parameter] [db-type]
2582
+
il.Emit(OpCodes.Call,typeof(SqlMapper).GetMethod(nameof(SqlMapper.SetDbType),BindingFlags.Static|BindingFlags.Public));// stack is now [parameters] [[parameters]] [parameter]
2575
2583
}
2576
2584
else
2577
2585
{
2578
2586
// constant value; nice and simple
2579
-
EmitInt32(il,(int)dbType);// stack is now [parameters] [[parameters]] [parameter] [parameter] [db-type]
2587
+
EmitInt32(il,(int)dbType.GetValueOrDefault());// stack is now [parameters] [[parameters]] [parameter] [parameter] [db-type]
2588
+
il.EmitCall(OpCodes.Callvirt,typeof(IDataParameter).GetProperty(nameof(IDataParameter.DbType)).GetSetMethod(),null);// stack is now [parameters] [[parameters]] [parameter]
2580
2589
}
2581
-
il.EmitCall(OpCodes.Callvirt,typeof(IDataParameter).GetProperty(nameof(IDataParameter.DbType)).GetSetMethod(),null);// stack is now [parameters] [[parameters]] [parameter]
2582
2590
}
2583
2591
2584
2592
il.Emit(OpCodes.Dup);// stack is now [parameters] [[parameters]] [parameter] [parameter]
0 commit comments