11using System ;
2- using System . Collections . Generic ;
32using System . Data ;
43using System . Data . Common ;
5- using System . Reflection ;
64using NHibernate . SqlTypes ;
5+ using NHibernate . Util ;
76
87namespace 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