From: <fab...@us...> - 2009-07-09 15:31:09
|
Revision: 4597 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4597&view=rev Author: fabiomaulo Date: 2009-07-09 15:31:05 +0000 (Thu, 09 Jul 2009) Log Message: ----------- Merge r4596 (fix NH-1872 by Erik Petersen) Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs Modified: trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs 2009-07-09 15:27:05 UTC (rev 4596) +++ trunk/nhibernate/src/NHibernate/Driver/OdbcDriver.cs 2009-07-09 15:31:05 UTC (rev 4597) @@ -1,6 +1,8 @@ using System; using System.Data; using System.Data.Odbc; +using NHibernate.SqlCommand; +using NHibernate.SqlTypes; namespace NHibernate.Driver { @@ -40,5 +42,39 @@ { get { return String.Empty; } } + + private static void SetVariableLengthParameterSize(IDbDataParameter dbParam, SqlType sqlType) + { + // Override the defaults using data from SqlType. + if (sqlType.LengthDefined) + { + dbParam.Size = sqlType.Length; + } + + if (sqlType.PrecisionDefined) + { + dbParam.Precision = sqlType.Precision; + dbParam.Scale = sqlType.Scale; + } + } + + public static void SetParameterSizes(IDataParameterCollection parameters, SqlType[] parameterTypes) + { + for (int i = 0; i < parameters.Count; i++) + { + SetVariableLengthParameterSize((IDbDataParameter)parameters[i], parameterTypes[i]); + } + } + + public override IDbCommand GenerateCommand(CommandType type, SqlString sqlString, SqlType[] parameterTypes) + { + IDbCommand command = base.GenerateCommand(type, sqlString, parameterTypes); + if (IsPrepareSqlEnabled) + { + SetParameterSizes(command.Parameters, parameterTypes); + } + return command; + } + } } \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |