From 2f99152ca6bbdd6a5e9219750ad53759e825d062 Mon Sep 17 00:00:00 2001 From: Alexander Zaytsev Date: Tue, 15 Oct 2019 21:46:20 +1300 Subject: [PATCH 1/2] Improve handling of SqlCeParameter.SqlDbType --- src/NHibernate/Driver/SqlServerCeDriver.cs | 25 +++++++--------------- 1 file changed, 8 insertions(+), 17 deletions(-) diff --git a/src/NHibernate/Driver/SqlServerCeDriver.cs b/src/NHibernate/Driver/SqlServerCeDriver.cs index 300e15c06cc..293a5baf690 100644 --- a/src/NHibernate/Driver/SqlServerCeDriver.cs +++ b/src/NHibernate/Driver/SqlServerCeDriver.cs @@ -1,9 +1,8 @@ using System; -using System.Collections.Generic; using System.Data; using System.Data.Common; -using System.Reflection; using NHibernate.SqlTypes; +using NHibernate.Util; namespace NHibernate.Driver { @@ -12,6 +11,11 @@ namespace NHibernate.Driver /// public class SqlServerCeDriver : ReflectionBasedDriver { + private static readonly Action SetSqlDbType = + DelegateHelper.BuildPropertySetter( + System.Type.GetType("System.Data.SqlServerCe.SqlCeParameter, System.Data.SqlServerCe", true), + "SqlDbType"); + /// /// Initializes a new instance of the class. /// @@ -23,19 +27,6 @@ public SqlServerCeDriver() { } - private PropertyInfo dbParamSqlDbTypeProperty; - - public override void Configure(IDictionary settings) - { - base.Configure(settings); - - using (var cmd = CreateCommand()) - { - var dbParam = cmd.CreateParameter(); - dbParamSqlDbTypeProperty = dbParam.GetType().GetProperty("SqlDbType"); - } - } - /// /// MsSql requires the use of a Named Prefix in the SQL statement. /// @@ -109,11 +100,11 @@ private void AdjustDbParamTypeForLargeObjects(DbParameter dbParam, SqlType sqlTy { if (sqlType is BinaryBlobSqlType) { - dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.Image, null); + SetSqlDbType(dbParam, SqlDbType.Image); } else if (sqlType is StringClobSqlType) { - dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.NText, null); + SetSqlDbType(dbParam, SqlDbType.NText); } } From 695e2283c119576745e41e7d83f77fce173d4a37 Mon Sep 17 00:00:00 2001 From: Alexander Zaytsev Date: Thu, 17 Oct 2019 17:11:51 +1300 Subject: [PATCH 2/2] Use ReflectHelper.TypeFromAssembly --- src/NHibernate/Driver/SqlServerCeDriver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/NHibernate/Driver/SqlServerCeDriver.cs b/src/NHibernate/Driver/SqlServerCeDriver.cs index 293a5baf690..eb4f03316ea 100644 --- a/src/NHibernate/Driver/SqlServerCeDriver.cs +++ b/src/NHibernate/Driver/SqlServerCeDriver.cs @@ -13,7 +13,7 @@ public class SqlServerCeDriver : ReflectionBasedDriver { private static readonly Action SetSqlDbType = DelegateHelper.BuildPropertySetter( - System.Type.GetType("System.Data.SqlServerCe.SqlCeParameter, System.Data.SqlServerCe", true), + ReflectHelper.TypeFromAssembly("System.Data.SqlServerCe.SqlCeParameter", "System.Data.SqlServerCe", true), "SqlDbType"); ///