mirror of
https://github.com/DapperLib/Dapper.git
synced 2026-10-29 05:10:10 +08:00
Merge pull request #45 from jkonecki/6dfdbf9306759118e3d0e086e85df9f90d736624
Fix for issue #70 (support for TimeSpan)
This commit is contained in:
+8
-3
@@ -301,6 +301,7 @@ namespace Dapper
|
||||
typeMap[typeof(Guid)] = DbType.Guid;
|
||||
typeMap[typeof(DateTime)] = DbType.DateTime;
|
||||
typeMap[typeof(DateTimeOffset)] = DbType.DateTimeOffset;
|
||||
typeMap[typeof(TimeSpan)] = DbType.Time;
|
||||
typeMap[typeof(byte[])] = DbType.Binary;
|
||||
typeMap[typeof(byte?)] = DbType.Byte;
|
||||
typeMap[typeof(sbyte?)] = DbType.SByte;
|
||||
@@ -318,6 +319,7 @@ namespace Dapper
|
||||
typeMap[typeof(Guid?)] = DbType.Guid;
|
||||
typeMap[typeof(DateTime?)] = DbType.DateTime;
|
||||
typeMap[typeof(DateTimeOffset?)] = DbType.DateTimeOffset;
|
||||
typeMap[typeof(TimeSpan?)] = DbType.Time;
|
||||
typeMap[typeof(Object)] = DbType.Object;
|
||||
}
|
||||
|
||||
@@ -1415,10 +1417,13 @@ this IDbConnection cnn, string sql, Func<TFirst, TSecond, TThird, TFourth, TRetu
|
||||
il.Emit(OpCodes.Ldstr, prop.Name); // stack is now [parameters] [parameters] [parameter] [parameter] [name]
|
||||
il.EmitCall(OpCodes.Callvirt, typeof(IDataParameter).GetProperty("ParameterName").GetSetMethod(), null);// stack is now [parameters] [parameters] [parameter]
|
||||
|
||||
il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
|
||||
EmitInt32(il, (int)dbType);// stack is now [parameters] [parameters] [parameter] [parameter] [db-type]
|
||||
if(dbType != DbType.Time) // https://connect.microsoft.com/VisualStudio/feedback/details/381934/sqlparameter-dbtype-dbtype-time-sets-the-parameter-to-sqldbtype-datetime-instead-of-sqldbtype-time
|
||||
{
|
||||
il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
|
||||
EmitInt32(il, (int)dbType);// stack is now [parameters] [parameters] [parameter] [parameter] [db-type]
|
||||
|
||||
il.EmitCall(OpCodes.Callvirt, typeof(IDataParameter).GetProperty("DbType").GetSetMethod(), null);// stack is now [parameters] [parameters] [parameter]
|
||||
il.EmitCall(OpCodes.Callvirt, typeof(IDataParameter).GetProperty("DbType").GetSetMethod(), null);// stack is now [parameters] [parameters] [parameter]
|
||||
}
|
||||
|
||||
il.Emit(OpCodes.Dup);// stack is now [parameters] [parameters] [parameter] [parameter]
|
||||
EmitInt32(il, (int)ParameterDirection.Input);// stack is now [parameters] [parameters] [parameter] [parameter] [dir]
|
||||
|
||||
@@ -362,6 +362,14 @@ namespace SqlMapper
|
||||
.IsFalse();
|
||||
}
|
||||
|
||||
// http://code.google.com/p/dapper-dot-net/issues/detail?id=70
|
||||
// https://connect.microsoft.com/VisualStudio/feedback/details/381934/sqlparameter-dbtype-dbtype-time-sets-the-parameter-to-sqldbtype-datetime-instead-of-sqldbtype-time
|
||||
public void TestTimeSpanParam()
|
||||
{
|
||||
connection.Query<TimeSpan>("select @ts", new { ts = TimeSpan.FromMinutes(42) }).First()
|
||||
.IsEqualTo(TimeSpan.FromMinutes(42));
|
||||
}
|
||||
|
||||
public void TestStrings()
|
||||
{
|
||||
connection.Query<string>(@"select 'a' a union select 'b'")
|
||||
|
||||
Reference in New Issue
Block a user