diff -rupN ..\SubSonic2.2_olde\SubSonic\DataProviders\DataProvider.cs .\SubSonic\DataProviders\DataProvider.cs --- ..\SubSonic2.2_olde\SubSonic\DataProviders\DataProvider.cs Mon Jul 20 17:18:10 2009 +++ .\SubSonic\DataProviders\DataProvider.cs Thu May 27 14:22:47 2010 @@ -855,6 +855,43 @@ namespace SubSonic return null; } + private static Dictionary dbTypeMap = InitDbTypeMap(); + + private static Dictionary InitDbTypeMap() + { + Dictionary dbTypeMap = new Dictionary(); + + dbTypeMap.Add(typeof(bool), DbType.Boolean); + dbTypeMap.Add(typeof(byte), DbType.Byte); + dbTypeMap.Add(typeof(byte[]), DbType.Binary); + dbTypeMap.Add(typeof(DateTime), DbType.DateTime); + dbTypeMap.Add(typeof(Decimal), DbType.Decimal); + dbTypeMap.Add(typeof(double), DbType.Double); + dbTypeMap.Add(typeof(float), DbType.Single); + dbTypeMap.Add(typeof(Guid), DbType.Guid); + dbTypeMap.Add(typeof(Int16), DbType.Int16); + dbTypeMap.Add(typeof(Int32), DbType.Int32); + dbTypeMap.Add(typeof(Int64), DbType.Int64); + dbTypeMap.Add(typeof(object), DbType.Object); + dbTypeMap.Add(typeof(string), DbType.String); + dbTypeMap.Add(typeof(TimeSpan), DbType.Time); + dbTypeMap.Add(typeof(UInt16), DbType.UInt16); + dbTypeMap.Add(typeof(UInt32), DbType.UInt32); + dbTypeMap.Add(typeof(UInt64), DbType.UInt64); + + return dbTypeMap; + } + + public DbType GetDbType(Type dataType) + { + DbType result; + if (dbTypeMap.TryGetValue(dataType, out result)) + { + return result; + } + return DbType.AnsiString; + } + /// /// Gets the type of the db. /// diff -rupN ..\SubSonic2.2_olde\SubSonic\SqlQuery\InlineQuery.cs .\SubSonic\SqlQuery\InlineQuery.cs --- ..\SubSonic2.2_olde\SubSonic\SqlQuery\InlineQuery.cs Mon Jul 20 17:18:10 2009 +++ .\SubSonic\SqlQuery\InlineQuery.cs Wed Jun 02 10:56:43 2010 @@ -275,7 +275,7 @@ namespace SubSonic int indexer = 0; foreach(string s in paramList) { - command.Parameters.Add(s, values[indexer]); + command.Parameters.Add(s, values[indexer], command.Provider.GetDbType(values[indexer].GetType())); indexer++; } }