Skip to content

Commit bf2f7f2

Browse files
hazzikfredericDelaporte
authored andcommitted
Improve handling of SqlCeParameter.SqlDbType (#2249)
1 parent dceb7fa commit bf2f7f2

File tree

1 file changed

+8
-17
lines changed

1 file changed

+8
-17
lines changed

src/NHibernate/Driver/SqlServerCeDriver.cs

Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
using System;
2-
using System.Collections.Generic;
32
using System.Data;
43
using System.Data.Common;
5-
using System.Reflection;
64
using NHibernate.SqlTypes;
5+
using NHibernate.Util;
76

87
namespace NHibernate.Driver
98
{
@@ -12,6 +11,11 @@ namespace NHibernate.Driver
1211
/// </summary>
1312
public class SqlServerCeDriver : ReflectionBasedDriver
1413
{
14+
private static readonly Action<object, SqlDbType> SetSqlDbType =
15+
DelegateHelper.BuildPropertySetter<SqlDbType>(
16+
ReflectHelper.TypeFromAssembly("System.Data.SqlServerCe.SqlCeParameter", "System.Data.SqlServerCe", true),
17+
"SqlDbType");
18+
1519
/// <summary>
1620
/// Initializes a new instance of the <see cref="SqlServerCeDriver"/> class.
1721
/// </summary>
@@ -23,19 +27,6 @@ public SqlServerCeDriver()
2327
{
2428
}
2529

26-
private PropertyInfo dbParamSqlDbTypeProperty;
27-
28-
public override void Configure(IDictionary<string, string> settings)
29-
{
30-
base.Configure(settings);
31-
32-
using (var cmd = CreateCommand())
33-
{
34-
var dbParam = cmd.CreateParameter();
35-
dbParamSqlDbTypeProperty = dbParam.GetType().GetProperty("SqlDbType");
36-
}
37-
}
38-
3930
/// <summary>
4031
/// MsSql requires the use of a Named Prefix in the SQL statement.
4132
/// </summary>
@@ -109,11 +100,11 @@ private void AdjustDbParamTypeForLargeObjects(DbParameter dbParam, SqlType sqlTy
109100
{
110101
if (sqlType is BinaryBlobSqlType)
111102
{
112-
dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.Image, null);
103+
SetSqlDbType(dbParam, SqlDbType.Image);
113104
}
114105
else if (sqlType is StringClobSqlType)
115106
{
116-
dbParamSqlDbTypeProperty.SetValue(dbParam, SqlDbType.NText, null);
107+
SetSqlDbType(dbParam, SqlDbType.NText);
117108
}
118109
}
119110

0 commit comments

Comments
 (0)