From: <aye...@us...> - 2008-09-29 17:25:43
|
Revision: 3798 http://nhibernate.svn.sourceforge.net/nhibernate/?rev=3798&view=rev Author: ayenderahien Date: 2008-09-29 17:25:31 +0000 (Mon, 29 Sep 2008) Log Message: ----------- Applying patch from Artur Dorochowicz, better parameter handling for Clob and Image columns on SQL CE Modified Paths: -------------- trunk/nhibernate/src/NHibernate/Driver/SqlServerCeDriver.cs Modified: trunk/nhibernate/src/NHibernate/Driver/SqlServerCeDriver.cs =================================================================== --- trunk/nhibernate/src/NHibernate/Driver/SqlServerCeDriver.cs 2008-09-29 13:40:17 UTC (rev 3797) +++ trunk/nhibernate/src/NHibernate/Driver/SqlServerCeDriver.cs 2008-09-29 17:25:31 UTC (rev 3798) @@ -24,11 +24,18 @@ } private bool prepareSql; + private System.Reflection.PropertyInfo dbParamSqlDbTypeProperty; public override void Configure(IDictionary<string, string> settings) { base.Configure(settings); prepareSql = PropertiesHelper.GetBoolean(Environment.PrepareSql, settings, false); + + using (IDbCommand dbCmd = base.CreateCommand()) + { + IDbDataParameter dbParam = dbCmd.CreateParameter(); + dbParamSqlDbTypeProperty = dbParam.GetType().GetProperty( "SqlDbType" ); + } } /// <summary> @@ -94,5 +101,24 @@ { get { return true; } } + + protected override void InitializeParameter(IDbDataParameter dbParam, string name, SqlType sqlType) + { + base.InitializeParameter(dbParam, name, sqlType); + + AdjustDbParamTypeForLargeObjects( dbParam, sqlType ); + } + + private void AdjustDbParamTypeForLargeObjects(IDbDataParameter dbParam, SqlType sqlType) + { + if (sqlType is BinarySqlType) + { + dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.Image, null); + } + else if (sqlType is StringSqlType) + { + dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.NText, null); + } + } } -} \ No newline at end of file +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |