diff --git a/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs index 7b868dc8f81..fc8c339848e 100644 --- a/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs +++ b/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs @@ -9,7 +9,8 @@ using NHibernate.Cfg; -using NHibernate.Dialect; +using NHibernate.Driver; +using NHibernate.Engine; using NUnit.Framework; namespace NHibernate.Test.NHSpecificTest.SqlConverterAndMultiQuery @@ -25,11 +26,13 @@ protected override void Configure(Configuration configuration) configuration.DataBaseIntegration(x => x.ExceptionConverter()); } - protected override bool AppliesTo(Dialect.Dialect dialect) + protected override bool AppliesTo(ISessionFactoryImplementor factory) { - // MsSqlCe throws InvalidOperationException instead of a DbException for these tests, preventing - // the test SqlConverter to do its job. - return !(Dialect is MsSqlCeDialect); + // Test current implementation allows to test mmostly SQL Server. Other databases + // tend to (validly) send InvalidOperationException during prepare phase due to the closed + // connection, which get not converted. For testing other case, maybe a failure caused by a + // schema mismatch (like done in transaction tests) would be better. + return factory.ConnectionProvider.Driver is SqlClientDriver; } [Test] diff --git a/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs index d21099f02bc..5d822391ca9 100644 --- a/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs +++ b/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs @@ -1,5 +1,6 @@ using NHibernate.Cfg; -using NHibernate.Dialect; +using NHibernate.Driver; +using NHibernate.Engine; using NUnit.Framework; namespace NHibernate.Test.NHSpecificTest.SqlConverterAndMultiQuery @@ -14,11 +15,13 @@ protected override void Configure(Configuration configuration) configuration.DataBaseIntegration(x => x.ExceptionConverter()); } - protected override bool AppliesTo(Dialect.Dialect dialect) + protected override bool AppliesTo(ISessionFactoryImplementor factory) { - // MsSqlCe throws InvalidOperationException instead of a DbException for these tests, preventing - // the test SqlConverter to do its job. - return !(Dialect is MsSqlCeDialect); + // Test current implementation allows to test mmostly SQL Server. Other databases + // tend to (validly) send InvalidOperationException during prepare phase due to the closed + // connection, which get not converted. For testing other case, maybe a failure caused by a + // schema mismatch (like done in transaction tests) would be better. + return factory.ConnectionProvider.Driver is SqlClientDriver; } [Test] diff --git a/src/NHibernate/Driver/Sql2008ClientDriver.cs b/src/NHibernate/Driver/Sql2008ClientDriver.cs index 90912bb234d..d6ba53d8627 100644 --- a/src/NHibernate/Driver/Sql2008ClientDriver.cs +++ b/src/NHibernate/Driver/Sql2008ClientDriver.cs @@ -2,12 +2,13 @@ using System.Data; using System.Data.Common; using System.Data.SqlClient; -using System.Linq; namespace NHibernate.Driver { public class Sql2008ClientDriver : SqlClientDriver { + const byte MaxTime = 5; + protected override void InitializeParameter(DbParameter dbParam, string name, SqlTypes.SqlType sqlType) { base.InitializeParameter(dbParam, name, sqlType); @@ -15,6 +16,7 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq { case DbType.Time: ((SqlParameter) dbParam).SqlDbType = SqlDbType.Time; + dbParam.Size = MaxTime; break; case DbType.Date: ((SqlParameter) dbParam).SqlDbType = SqlDbType.Date; diff --git a/src/NHibernate/Driver/SqlClientDriver.cs b/src/NHibernate/Driver/SqlClientDriver.cs index beb0c951574..e3baabbd6f1 100644 --- a/src/NHibernate/Driver/SqlClientDriver.cs +++ b/src/NHibernate/Driver/SqlClientDriver.cs @@ -100,7 +100,6 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq SetVariableLengthParameterSize(dbParam, sqlType); } - // Used from SqlServerCeDriver as well public static void SetVariableLengthParameterSize(DbParameter dbParam, SqlType sqlType) { SetDefaultParameterSize(dbParam, sqlType); diff --git a/src/NHibernate/Driver/SqlServerCeDriver.cs b/src/NHibernate/Driver/SqlServerCeDriver.cs index ad18982dd25..4610cb47269 100644 --- a/src/NHibernate/Driver/SqlServerCeDriver.cs +++ b/src/NHibernate/Driver/SqlServerCeDriver.cs @@ -4,8 +4,6 @@ using System.Data.Common; using System.Reflection; using NHibernate.SqlTypes; -using NHibernate.Util; -using Environment = NHibernate.Cfg.Environment; namespace NHibernate.Driver { @@ -25,13 +23,11 @@ public SqlServerCeDriver() { } - private bool prepareSql; private PropertyInfo dbParamSqlDbTypeProperty; public override void Configure(IDictionary settings) { base.Configure(settings); - prepareSql = PropertiesHelper.GetBoolean(Environment.PrepareSql, settings, false); using (var cmd = CreateCommand()) { @@ -102,10 +98,6 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq base.InitializeParameter(dbParam, name, AdjustSqlType(sqlType)); AdjustDbParamTypeForLargeObjects(dbParam, sqlType); - if (prepareSql) - { - SqlClientDriver.SetVariableLengthParameterSize(dbParam, sqlType); - } } private static SqlType AdjustSqlType(SqlType sqlType)