Commit 19afe1ed authored by Marc Gravell's avatar Marc Gravell

fix #455 (make LookupDbType available again)

parent 3d114884
......@@ -233,7 +233,12 @@ protected void AddParameters(IDbCommand command, SqlMapper.Identity identity)
var isCustomQueryParameter = val is SqlMapper.ICustomQueryParameter;
SqlMapper.ITypeHandler handler = null;
if (dbType == null && val != null && !isCustomQueryParameter) dbType = SqlMapper.LookupDbType(val.GetType(), name, true, out handler);
if (dbType == null && val != null && !isCustomQueryParameter)
{
#pragma warning disable 618
dbType = SqlMapper.LookupDbType(val.GetType(), name, true, out handler);
#pragma warning disable 618
}
if (isCustomQueryParameter)
{
((SqlMapper.ICustomQueryParameter)val).AddParameter(command, name);
......@@ -468,7 +473,11 @@ public DynamicParameters Output<T>(T target, Expression<Func<T, object>> express
else
{
SqlMapper.ITypeHandler handler;
dbType = (!dbType.HasValue) ? SqlMapper.LookupDbType(targetMemberType, targetMemberType?.Name, true, out handler) : dbType;
dbType = (!dbType.HasValue)
#pragma warning disable 618
? SqlMapper.LookupDbType(targetMemberType, targetMemberType?.Name, true, out handler)
#pragma warning restore 618
: dbType;
// CameFromTemplate property would not apply here because this new param
// Still needs to be added to the command
......
......@@ -13,7 +13,7 @@ partial class SqlMapper
/// <summary>
/// Not intended for direct usage
/// </summary>
[Obsolete("Not intended for direct usage", false)]
[Obsolete(ObsoleteInternalUsageOnly, false)]
#if !COREFX
[Browsable(false)]
#endif
......@@ -23,7 +23,7 @@ public static class TypeHandlerCache<T>
/// <summary>
/// Not intended for direct usage
/// </summary>
[Obsolete("Not intended for direct usage", true)]
[Obsolete(ObsoleteInternalUsageOnly, true)]
public static T Parse(object value)
{
return (T)handler.Parse(typeof(T), value);
......@@ -32,7 +32,7 @@ public static T Parse(object value)
/// <summary>
/// Not intended for direct usage
/// </summary>
[Obsolete("Not intended for direct usage", true)]
[Obsolete(ObsoleteInternalUsageOnly, true)]
public static void SetValue(IDbDataParameter parameter, object value)
{
handler.SetValue(parameter, value);
......
......@@ -331,10 +331,12 @@ public static void AddTypeHandler<T>(TypeHandler<T> handler)
internal const string LinqBinary = "System.Data.Linq.Binary";
private const string ObsoleteInternalUsageOnly = "This method is for internal use only";
/// <summary>
/// Get the DbType that maps to a given value
/// </summary>
[Obsolete("This method is for internal use only")]
[Obsolete(ObsoleteInternalUsageOnly, false)]
#if !COREFX
[Browsable(false)]
#endif
......@@ -347,7 +349,12 @@ public static DbType GetDbType(object value)
return LookupDbType(value.GetType(), "n/a", false, out handler);
}
internal static DbType LookupDbType(Type type, string name, bool demand, out ITypeHandler handler)
[Obsolete(ObsoleteInternalUsageOnly, false)]
#if !COREFX
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
public static DbType LookupDbType(Type type, string name, bool demand, out ITypeHandler handler)
{
DbType dbType;
handler = null;
......@@ -1707,7 +1714,7 @@ private static Exception MultiMapException(IDataRecord reader)
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", false)]
[Obsolete(ObsoleteInternalUsageOnly, false)]
public static char ReadChar(object value)
{
if (value == null || value is DBNull) throw new ArgumentNullException(nameof(value));
......@@ -1723,7 +1730,7 @@ public static char ReadChar(object value)
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", false)]
[Obsolete(ObsoleteInternalUsageOnly, false)]
public static char? ReadNullableChar(object value)
{
if (value == null || value is DBNull) return null;
......@@ -1740,7 +1747,7 @@ public static char ReadChar(object value)
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", true)]
[Obsolete(ObsoleteInternalUsageOnly, true)]
public static IDbDataParameter FindOrAddParameter(IDataParameterCollection parameters, IDbCommand command, string name)
{
IDbDataParameter result;
......@@ -1764,7 +1771,7 @@ public static IDbDataParameter FindOrAddParameter(IDataParameterCollection param
[Browsable(false)]
#endif
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete("This method is for internal usage only", false)]
[Obsolete(ObsoleteInternalUsageOnly, false)]
public static void PackListParameters(IDbCommand command, string namePrefix, object value)
{
// initially we tried TVP, however it performs quite poorly.
......@@ -1928,7 +1935,7 @@ public static void ReplaceLiterals(this IParameterLookup parameters, IDbCommand
/// <summary>
/// Convert numeric values to their string form for SQL literal purposes
/// </summary>
[Obsolete("This is intended for internal usage only")]
[Obsolete(ObsoleteInternalUsageOnly)]
public static string Format(object value)
{
if (value == null)
......@@ -2143,7 +2150,9 @@ internal static IList<LiteralToken> GetLiteralTokens(string sql)
continue;
}
ITypeHandler handler;
#pragma warning disable 618
DbType dbType = LookupDbType(prop.PropertyType, prop.Name, true, out handler);
#pragma warning restore 618
if (dbType == DynamicParameters.EnumerableMultiParameter)
{
// this actually represents special handling for list types;
......@@ -3161,7 +3170,7 @@ private static void LoadLocalAddress(ILGenerator il, int index)
/// <summary>
/// Throws a data exception, only used internally
/// </summary>
[Obsolete("Intended for internal use only")]
[Obsolete(ObsoleteInternalUsageOnly, false)]
public static void ThrowDataException(Exception ex, int index, IDataReader reader, object value)
{
Exception toThrow;
......
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