diff --git a/build-common/nhibernate-properties.xml b/build-common/nhibernate-properties.xml
index 4b62e992a55..d01178e24d1 100644
--- a/build-common/nhibernate-properties.xml
+++ b/build-common/nhibernate-properties.xml
@@ -2,6 +2,6 @@
-
+
diff --git a/build-common/teamcity-hibernate.cfg.xml b/build-common/teamcity-hibernate.cfg.xml
index e8cb7f7e6dd..31ec67dcee9 100644
--- a/build-common/teamcity-hibernate.cfg.xml
+++ b/build-common/teamcity-hibernate.cfg.xml
@@ -15,7 +15,7 @@
true
- NHibernate.Driver.Sql2008ClientDriver
+ NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer
NHibernate.Dialect.MsSql2008Dialect
Server=.\SQLExpress;initial catalog=nhibernate;Integrated Security=SSPI
false
diff --git a/default.build b/default.build
index 8201995f47a..21f4379fd95 100644
--- a/default.build
+++ b/default.build
@@ -223,6 +223,7 @@
+
@@ -254,6 +255,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/reference/modules/configuration.xml b/doc/reference/modules/configuration.xml
index 5c2e4024d74..c0e6d9a932d 100644
--- a/doc/reference/modules/configuration.xml
+++ b/doc/reference/modules/configuration.xml
@@ -227,6 +227,13 @@ var session = sessions.OpenSession(conn);
take care of setting the IDriver using a sensible default. See the API
documentation of the specific dialect for the defaults.
+
+ Since NHibernate v5.1, drivers having a NuGet package for their data provider have a
+ NHibernate.Driver dedicated assembly, which have to be referenced by your project.
+ Those assemblies are also available as NuGet packages.
+ If an obsolete driver is configured, NHibernate will issue a warning log when building the session
+ factory.
+
@@ -1186,9 +1193,13 @@ in the parameter binding.
Firebird
NHibernate.Dialect.FirebirdDialect
- Set driver_class to
- NHibernate.Driver.FirebirdClientDriver
- for Firebird ADO.NET provider 2.0.
+ Install NuGet package
+ NHibernate.Driver.Firebird
+ and set driver_class to
+ NHibernate.Driver.FirebirdDriver, NHibernate.Driver.Firebird
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.FirebirdClientDriver.
+ Both use Firebird ADO.NET provider.
@@ -1219,65 +1230,99 @@ in the parameter binding.
Microsoft SQL Server 7
NHibernate.Dialect.MsSql7Dialect
-
+ Use the same default driver as NHibernate.Dialect.MsSql2000Dialect.
Microsoft SQL Server 2000
NHibernate.Dialect.MsSql2000Dialect
-
+
+ Install NuGet package
+ NHibernate.Driver.SqlServer
+ and set driver_class to
+ NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.SqlClientDriver.
+ Both use System.Data.SqlClient.
+
Microsoft SQL Server 2005
NHibernate.Dialect.MsSql2005Dialect
-
+ Use the same default driver as NHibernate.Dialect.MsSql2000Dialect.
Microsoft SQL Server 2008
NHibernate.Dialect.MsSql2008Dialect
-
+
+ Install NuGet package
+ NHibernate.Driver.SqlServer
+ and set driver_class to
+ NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.Sql2008ClientDriver.
+ Both use System.Data.SqlClient.
+
Microsoft SQL Azure Server 2008
NHibernate.Dialect.MsSqlAzure2008Dialect
-
+ Use the same default driver as NHibernate.Dialect.MsSql2008Dialect.
Microsoft SQL Server 2012
NHibernate.Dialect.MsSql2012Dialect
-
+ Use the same default driver as NHibernate.Dialect.MsSql2008Dialect.
Microsoft SQL Server Compact Edition
NHibernate.Dialect.MsSqlCeDialect
+
+ Install NuGet package
+ NHibernate.Driver.SqlServer.Compact
+ and set driver_class to
+ NHibernate.Driver.SqlServerCompactDriver, NHibernate.Driver.SqlServer.Compact
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.SqlServerCeDriver.
+ Both use System.Data.SqlServerCe.
+
Microsoft SQL Server Compact Edition 4.0
NHibernate.Dialect.MsSqlCe40Dialect
+ Use the same default driver as NHibernate.Dialect.MsSqlCeDialect.
- MySQL 3 or 4
+ MySQL 3 or 4
NHibernate.Dialect.MySQLDialect
-
+
+ Install NuGet package
+ NHibernate.Driver.MySql
+ and set driver_class to
+ NHibernate.Driver.MySqlDriver, NHibernate.Driver.MySql
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.MySqlDataDriver.
+ Both use MySql.Data.
+
MySQL 5
NHibernate.Dialect.MySQL5Dialect
-
+ Use the same default driver as NHibernate.Dialect.MySQLDialect.
MySQL 5 Inno DB
NHibernate.Dialect.MySQL5InnoDBDialect
-
+ Use the same default driver as NHibernate.Dialect.MySQLDialect.
MySQL 5.5
NHibernate.Dialect.MySQL55Dialect
-
+ Use the same default driver as NHibernate.Dialect.MySQLDialect.
MySQL 5.5 Inno DB
NHibernate.Dialect.MySQL55InnoDBDialect
-
+ Use the same default driver as NHibernate.Dialect.MySQLDialect.
Oracle
@@ -1299,15 +1344,17 @@ in the parameter binding.
NHibernate.Dialect.Oracle12cDialect
-
- PostgreSQL
- NHibernate.Dialect.PostgreSQLDialect
-
-
PostgreSQL
NHibernate.Dialect.PostgreSQLDialect
+ Install NuGet package
+ NHibernate.Driver.PostgreSql
+ and set driver_class to
+ NHibernate.Driver.PostgreSqlDriver, NHibernate.Driver.PostgreSql
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.NpgsqlDriver.
+ Both use Npgsql.
@@ -1316,6 +1363,7 @@ in the parameter binding.
This dialect supports FOR UPDATE NOWAIT
available in PostgreSQL 8.1.
+ Use the same default driver as NHibernate.Dialect.PostgreSQLDialect.
@@ -1325,6 +1373,7 @@ in the parameter binding.
This dialect supports IF EXISTS keyword in
DROP TABLE and DROP SEQUENCE
available in PostgreSQL 8.2.
+ Use the same default driver as NHibernate.Dialect.PostgreSQLDialect.
@@ -1332,15 +1381,20 @@ in the parameter binding.
NHibernate.Dialect.PostgreSQL83Dialect
This dialect supports XML type.
+ Use the same default driver as NHibernate.Dialect.PostgreSQLDialect.
SQLite
NHibernate.Dialect.SQLiteDialect
- Set driver_class to
- NHibernate.Driver.SQLite20Driver
- for System.Data.SQLite provider for .NET 2.0.
+ Install NuGet package
+ NHibernate.Driver.SQLite
+ and set driver_class to
+ NHibernate.Driver.SQLiteDriver, NHibernate.Driver.SQLite
+ with a fallback on the built-in reflection based
+ NHibernate.Driver.SQLite20Driver.
+ Both use System.Data.SQLite.
Due to
the
diff --git a/psake.ps1 b/psake.ps1
index e9cd52d7081..5864d9f2e4d 100644
--- a/psake.ps1
+++ b/psake.ps1
@@ -11,12 +11,12 @@ Task Set-Configuration {
$allSettings = @{
'Firebird' = @{
'connection.connection_string' = 'DataSource=localhost;Database=nhibernate;User ID=SYSDBA;Password=masterkey;MaxPoolSize=200;';
- 'connection.driver_class' = 'NHibernate.Driver.FirebirdClientDriver';
+ 'connection.driver_class' = 'NHibernate.Driver.FirebirdDriver, NHibernate.Driver.Firebird';
'dialect' = 'NHibernate.Dialect.FirebirdDialect'
};
'MySQL' = @{
'connection.connection_string' = 'Server=127.0.0.1;Uid=root;Pwd=Password12!;Database=nhibernate;Old Guids=True;';
- 'connection.driver_class' = 'NHibernate.Driver.MySqlDataDriver';
+ 'connection.driver_class' = 'NHibernate.Driver.MySqlDriver, NHibernate.Driver.MySql';
'dialect' = 'NHibernate.Dialect.MySQL5Dialect'
};
'Odbc' = @{
@@ -35,7 +35,7 @@ Task Set-Configuration {
};
'PostgreSQL' = @{
'connection.connection_string' = 'Host=localhost;Port=5432;Username=postgres;Password=Password12!;Database=nhibernate;Enlist=true';
- 'connection.driver_class' = 'NHibernate.Driver.NpgsqlDriver';
+ 'connection.driver_class' = 'NHibernate.Driver.PostgreSqlDriver, NHibernate.Driver.PostgreSql';
'dialect' = 'NHibernate.Dialect.PostgreSQL83Dialect'
};
'SQLite' = @{
@@ -46,13 +46,13 @@ Task Set-Configuration {
and https://github.com/nhibernate/nhibernate-core/issues/1362 #>
# Please note the connection string is formated for putting the db file in $configDir.
'connection.connection_string' = "Data Source=$configDir/NHibernate.db;DateTimeFormatString=yyyy-MM-dd HH:mm:ss.FFFFFFF;";
- 'connection.driver_class' = 'NHibernate.Driver.SQLite20Driver';
+ 'connection.driver_class' = 'NHibernate.Driver.SQLiteDriver, NHibernate.Driver.SQLite';
'dialect' = 'NHibernate.Dialect.SQLiteDialect'
};
'SqlServerCe' = @{
# Please note the connection string is formated for putting the db file in $configDir.
'connection.connection_string' = "Data Source=$configDir/NHibernate.sdf;";
- 'connection.driver_class' = 'NHibernate.Driver.SqlServerCeDriver';
+ 'connection.driver_class' = 'NHibernate.Driver.SqlServerCompactDriver, NHibernate.Driver.SqlServer.Compact';
'command_timeout' = '0';
'dialect' = 'NHibernate.Dialect.MsSqlCe40Dialect'
};
@@ -102,15 +102,15 @@ Task Build {
}
}
-Task Test -depends Build {
+Task Test {
@(
'NHibernate.TestDatabaseSetup',
'NHibernate.Test',
'NHibernate.Test.VisualBasic'
) | ForEach-Object {
- $assembly = [IO.Path]::Combine("src", $_, "bin", "Release", "netcoreapp2.0", "$_.dll")
+ $project = [IO.Path]::Combine("src", $_)
Exec {
- dotnet $assembly --labels=before --nocolor "--result=$_-TestResult.xml"
+ dotnet run -f netcoreapp2.0 -c Release -p $project -- --labels=before --nocolor "--result=$_-TestResult.xml"
}
}
}
\ No newline at end of file
diff --git a/src/NHibernate.Config.Templates/FireBird.cfg.xml b/src/NHibernate.Config.Templates/FireBird.cfg.xml
index 9e3c8e42992..82c4f81e603 100644
--- a/src/NHibernate.Config.Templates/FireBird.cfg.xml
+++ b/src/NHibernate.Config.Templates/FireBird.cfg.xml
@@ -16,7 +16,7 @@ for your own use before compile tests in VisualStudio.
-->
- NHibernate.Driver.FirebirdClientDriver
+ NHibernate.Driver.FirebirdDriver, NHibernate.Driver.Firebird
DataSource=localhost;
Database=nhibernate;
diff --git a/src/NHibernate.Config.Templates/MSSQL.cfg.xml b/src/NHibernate.Config.Templates/MSSQL.cfg.xml
index 8e5706a5c56..4aea9caec11 100644
--- a/src/NHibernate.Config.Templates/MSSQL.cfg.xml
+++ b/src/NHibernate.Config.Templates/MSSQL.cfg.xml
@@ -7,7 +7,7 @@ for your own use before compile tests in VisualStudio.
- NHibernate.Driver.Sql2008ClientDriver
+ NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer
Server=(local);initial catalog=nhibernate;Integrated Security=SSPI
diff --git a/src/NHibernate.Config.Templates/MySql.cfg.xml b/src/NHibernate.Config.Templates/MySql.cfg.xml
index be2366cd660..ef246809489 100644
--- a/src/NHibernate.Config.Templates/MySql.cfg.xml
+++ b/src/NHibernate.Config.Templates/MySql.cfg.xml
@@ -6,11 +6,11 @@ for your own use before compile tests in VisualStudio.
-->
- NHibernate.Driver.MySqlDataDriver
+ NHibernate.Driver.MySqlDriver, NHibernate.Driver.MySql
Database=nhibernate;Data Source=localhost;User Id=nhibernate;Password=;
Protocol=memory;Old Guids=True;
NHibernate.Dialect.MySQL5Dialect
-
\ No newline at end of file
+
diff --git a/src/NHibernate.Config.Templates/Oracle-Managed.cfg.xml b/src/NHibernate.Config.Templates/Oracle-Managed.cfg.xml
index efa6b51a596..44b2e57287b 100644
--- a/src/NHibernate.Config.Templates/Oracle-Managed.cfg.xml
+++ b/src/NHibernate.Config.Templates/Oracle-Managed.cfg.xml
@@ -7,7 +7,7 @@ for your own use before compile tests in VisualStudio.
- NHibernate.Driver.OracleManagedDataClientDriver
+ NHibernate.Driver.OracleManagedDriver, NHibernate.Driver.Oracle.Managed
User ID=nhibernate;Password=nhibernate;Data Source=(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = ORCL)))
diff --git a/src/NHibernate.Config.Templates/PostgreSQL.cfg.xml b/src/NHibernate.Config.Templates/PostgreSQL.cfg.xml
index 459543f2bbf..219fbbcc6be 100644
--- a/src/NHibernate.Config.Templates/PostgreSQL.cfg.xml
+++ b/src/NHibernate.Config.Templates/PostgreSQL.cfg.xml
@@ -6,7 +6,7 @@ for your own use before compile tests in VisualStudio.
-->
- NHibernate.Driver.NpgsqlDriver
+ NHibernate.Driver.PostgreSqlDriver, NHibernate.Driver.PostgreSql
Server=localhost;Database=nhibernate;User ID=nhibernate;Password=nhibernate;Enlist=true;
diff --git a/src/NHibernate.Config.Templates/SQLite.cfg.xml b/src/NHibernate.Config.Templates/SQLite.cfg.xml
index 50890aea597..559f9312d7e 100644
--- a/src/NHibernate.Config.Templates/SQLite.cfg.xml
+++ b/src/NHibernate.Config.Templates/SQLite.cfg.xml
@@ -6,7 +6,7 @@ for your own use before compile tests in VisualStudio.
-->
- NHibernate.Driver.SQLite20Driver
+ NHibernate.Driver.SQLiteDriver, NHibernate.Driver.SQLite
+
+
+ false
+ %(RecursiveDir)%(Filename)%(Extension)
+ PreserveNewest
+
+
+
+
+
+
+
+
+
+ NHibernate.license.txt
+
+
+
+
diff --git a/src/NHibernate.Driver.SQLite/Properties/AssemblyInfo.cs b/src/NHibernate.Driver.SQLite/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000000..71b3de6ca17
--- /dev/null
+++ b/src/NHibernate.Driver.SQLite/Properties/AssemblyInfo.cs
@@ -0,0 +1,8 @@
+using System;
+using System.Reflection;
+using System.Security;
+
+[assembly: CLSCompliantAttribute(true)]
+[assembly: AssemblyDelaySignAttribute(false)]
+[assembly: AllowPartiallyTrustedCallersAttribute()]
+[assembly: SecurityRulesAttribute(SecurityRuleSet.Level1)]
diff --git a/src/NHibernate.Driver.SqlServer.Compact/.gitignore b/src/NHibernate.Driver.SqlServer.Compact/.gitignore
new file mode 100644
index 00000000000..c3106783d7c
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer.Compact/.gitignore
@@ -0,0 +1 @@
+!build/
\ No newline at end of file
diff --git a/src/NHibernate.Driver.SqlServer.Compact/Cfg/ConnectionConfigurationExtensionSqlServerCompact.cs b/src/NHibernate.Driver.SqlServer.Compact/Cfg/ConnectionConfigurationExtensionSqlServerCompact.cs
new file mode 100644
index 00000000000..cc144b3c044
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer.Compact/Cfg/ConnectionConfigurationExtensionSqlServerCompact.cs
@@ -0,0 +1,18 @@
+using NHibernate.Cfg.Loquacious;
+using NHibernate.Driver;
+
+namespace NHibernate.Cfg
+{
+ public static class ConnectionConfigurationExtensionSqlServerCompact
+ {
+ public static IConnectionConfiguration BySqlServerCompactDriver(this IConnectionConfiguration cfg)
+ {
+ return cfg.By();
+ }
+
+ public static void SqlServerCompactDriver(this IDbIntegrationConfigurationProperties cfg)
+ {
+ cfg.Driver();
+ }
+ }
+}
diff --git a/src/NHibernate.Driver.SqlServer.Compact/NHibernate.Driver.SqlServer.Compact.csproj b/src/NHibernate.Driver.SqlServer.Compact/NHibernate.Driver.SqlServer.Compact.csproj
new file mode 100644
index 00000000000..52a61456f4a
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer.Compact/NHibernate.Driver.SqlServer.Compact.csproj
@@ -0,0 +1,71 @@
+
+
+
+
+ Driver for SQL Server Compact 4.0 to be used with NHibernate 5.
+ NHibernate; Driver; SQL; Compact; ADO.Net
+
+ net461
+ $(NoWarn);3001;3002;3003;3005;1591
+ True
+ true
+ ..\NHibernate.snk
+ true
+ True
+
+
+ true
+
+
+
+ NETFX;$(DefineConstants)
+
+
+
+ $(DefineConstants);DRIVER_PACKAGE
+ NHibernate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ build\
+
+
+
+
+
+
+ false
+ %(RecursiveDir)%(Filename)%(Extension)
+ PreserveNewest
+
+
+
+
+
+ NHibernate.license.txt
+
+
+
+
diff --git a/src/NHibernate.Driver.SqlServer.Compact/Properties/AssemblyInfo.cs b/src/NHibernate.Driver.SqlServer.Compact/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000000..71b3de6ca17
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer.Compact/Properties/AssemblyInfo.cs
@@ -0,0 +1,8 @@
+using System;
+using System.Reflection;
+using System.Security;
+
+[assembly: CLSCompliantAttribute(true)]
+[assembly: AssemblyDelaySignAttribute(false)]
+[assembly: AllowPartiallyTrustedCallersAttribute()]
+[assembly: SecurityRulesAttribute(SecurityRuleSet.Level1)]
diff --git a/src/NHibernate.Driver.SqlServer.Compact/build/NHibernate.Driver.SqlServer.Compact.targets b/src/NHibernate.Driver.SqlServer.Compact/build/NHibernate.Driver.SqlServer.Compact.targets
new file mode 100644
index 00000000000..1bafcf18130
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer.Compact/build/NHibernate.Driver.SqlServer.Compact.targets
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+ %(RecursiveDir)%(Filename)%(Extension)
+ PreserveNewest
+ false
+
+
+
+
+ $(ResolveAssemblyReferencesDependsOn);InjectReference_eb5aa2e4-6c92-4a75-85b8-1348b65397d1
+
+
\ No newline at end of file
diff --git a/src/NHibernate.Driver.SqlServer/Cfg/ConnectionConfigurationExtensionSqlServer.cs b/src/NHibernate.Driver.SqlServer/Cfg/ConnectionConfigurationExtensionSqlServer.cs
new file mode 100644
index 00000000000..b49c46e79a2
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer/Cfg/ConnectionConfigurationExtensionSqlServer.cs
@@ -0,0 +1,28 @@
+using NHibernate.Cfg.Loquacious;
+using NHibernate.Driver;
+
+namespace NHibernate.Cfg
+{
+ public static class ConnectionConfigurationExtensionSqlServer
+ {
+ public static IConnectionConfiguration BySqlServer2000Driver(this IConnectionConfiguration cfg)
+ {
+ return cfg.By();
+ }
+
+ public static void SqlServer2000Driver(this IDbIntegrationConfigurationProperties cfg)
+ {
+ cfg.Driver();
+ }
+
+ public static IConnectionConfiguration BySqlServer2008Driver(this IConnectionConfiguration cfg)
+ {
+ return cfg.By();
+ }
+
+ public static void SqlServer2008Driver(this IDbIntegrationConfigurationProperties cfg)
+ {
+ cfg.Driver();
+ }
+ }
+}
diff --git a/src/NHibernate.Driver.SqlServer/NHibernate.Driver.SqlServer.csproj b/src/NHibernate.Driver.SqlServer/NHibernate.Driver.SqlServer.csproj
new file mode 100644
index 00000000000..11a89607b2e
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer/NHibernate.Driver.SqlServer.csproj
@@ -0,0 +1,52 @@
+
+
+
+
+ Driver for Microsoft SQL Server to be used with NHibernate 5.
+ NHibernate; Driver; SqlClient; SqlServer; SQL Server; ADO.Net; Core
+
+ netstandard2.0;net461
+ $(NoWarn);3001;3002;3003;3005;1591
+ True
+ true
+ ..\NHibernate.snk
+ true
+ True
+
+
+ true
+
+
+
+ NETFX;$(DefineConstants)
+
+
+
+ $(DefineConstants);DRIVER_PACKAGE
+ NHibernate
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ NHibernate.license.txt
+
+
+
+
diff --git a/src/NHibernate.Driver.SqlServer/Properties/AssemblyInfo.cs b/src/NHibernate.Driver.SqlServer/Properties/AssemblyInfo.cs
new file mode 100644
index 00000000000..71b3de6ca17
--- /dev/null
+++ b/src/NHibernate.Driver.SqlServer/Properties/AssemblyInfo.cs
@@ -0,0 +1,8 @@
+using System;
+using System.Reflection;
+using System.Security;
+
+[assembly: CLSCompliantAttribute(true)]
+[assembly: AssemblyDelaySignAttribute(false)]
+[assembly: AllowPartiallyTrustedCallersAttribute()]
+[assembly: SecurityRulesAttribute(SecurityRuleSet.Level1)]
diff --git a/src/NHibernate.Everything.sln b/src/NHibernate.Everything.sln
index c2c257360fc..867db2fedd8 100644
--- a/src/NHibernate.Everything.sln
+++ b/src/NHibernate.Everything.sln
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26730.12
+VisualStudioVersion = 15.0.27004.2010
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Support", "Support", "{9BDB5C84-14EC-4384-B423-9E319675B3CA}"
ProjectSection(SolutionItems) = preProject
@@ -70,6 +70,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Tool.HbmXsd", "N
EndProject
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "NHibernate.Test.VisualBasic", "NHibernate.Test.VisualBasic\NHibernate.Test.VisualBasic.vbproj", "{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Drivers", "Drivers", "{A47739AF-6D04-45AA-B688-4E39CDE48FFD}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.Firebird", "NHibernate.Driver.Firebird\NHibernate.Driver.Firebird.csproj", "{DADD54C1-3679-4672-9774-9362428EB9E0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.MySql", "NHibernate.Driver.MySql\NHibernate.Driver.MySql.csproj", "{4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.PostgreSql", "NHibernate.Driver.PostgreSql\NHibernate.Driver.PostgreSql.csproj", "{C7C835DC-0A59-4227-9C3C-0AF0633CD68C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.Oracle.Managed", "NHibernate.Driver.Oracle.Managed\NHibernate.Driver.Oracle.Managed.csproj", "{22409381-1808-4F0A-9C42-9FAA6B3BCFA2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.SQLite", "NHibernate.Driver.SQLite\NHibernate.Driver.SQLite.csproj", "{99FE5A5C-F732-40A3-BEE6-ED5ADC393862}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.SqlServer", "NHibernate.Driver.SqlServer\NHibernate.Driver.SqlServer.csproj", "{CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.SqlServer.Compact", "NHibernate.Driver.SqlServer.Compact\NHibernate.Driver.SqlServer.Compact.csproj", "{11B3C504-D501-4766-AC36-0CF1A813815B}"
+EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Example.Web", "NHibernate.Example.Web\NHibernate.Example.Web.csproj", "{B291C1C1-599B-418E-8591-8A8CF1CAA188}"
EndProject
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.TestDatabaseSetup", "NHibernate.TestDatabaseSetup\NHibernate.TestDatabaseSetup.csproj", "{783DB85E-2EED-4377-8EF4-8D6EFE042007}"
@@ -133,6 +149,90 @@ Global
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}.Release|Any CPU.Build.0 = Release|Any CPU
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|.NET.Build.0 = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|.NET.ActiveCfg = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|.NET.Build.0 = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|.NET.Build.0 = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|.NET.ActiveCfg = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|.NET.Build.0 = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|.NET.Build.0 = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|.NET.ActiveCfg = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|.NET.Build.0 = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|.NET.Build.0 = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|.NET.ActiveCfg = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|.NET.Build.0 = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|.NET.Build.0 = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|.NET.ActiveCfg = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|.NET.Build.0 = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|.NET.Build.0 = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|.NET.ActiveCfg = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|.NET.Build.0 = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|Mixed Platforms.Build.0 = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|.NET.ActiveCfg = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|.NET.Build.0 = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|.NET.ActiveCfg = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|.NET.Build.0 = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|Mixed Platforms.Build.0 = Release|Any CPU
{B291C1C1-599B-418E-8591-8A8CF1CAA188}.Debug|.NET.ActiveCfg = Debug|Any CPU
{B291C1C1-599B-418E-8591-8A8CF1CAA188}.Debug|.NET.Build.0 = Debug|Any CPU
{B291C1C1-599B-418E-8591-8A8CF1CAA188}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
@@ -172,6 +272,14 @@ Global
{7AEE5B37-C552-4E59-9B6F-88755BCB5070} = {094F74CD-2DD7-496F-BC48-A6D357BF33FD}
{446E148D-A9D5-4D7D-A706-BEDD45B2BC7D} = {92509065-DAEA-4457-8300-C7B64CD0E9F4}
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C} = {094F74CD-2DD7-496F-BC48-A6D357BF33FD}
+ {A47739AF-6D04-45AA-B688-4E39CDE48FFD} = {28EA2C84-8295-49ED-BC67-803B7778513E}
+ {DADD54C1-3679-4672-9774-9362428EB9E0} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
+ {11B3C504-D501-4766-AC36-0CF1A813815B} = {A47739AF-6D04-45AA-B688-4E39CDE48FFD}
{783DB85E-2EED-4377-8EF4-8D6EFE042007} = {094F74CD-2DD7-496F-BC48-A6D357BF33FD}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
diff --git a/src/NHibernate.Example.Web/Infrastructure/AppSessionFactory.cs b/src/NHibernate.Example.Web/Infrastructure/AppSessionFactory.cs
index 38265648eda..f783e670153 100644
--- a/src/NHibernate.Example.Web/Infrastructure/AppSessionFactory.cs
+++ b/src/NHibernate.Example.Web/Infrastructure/AppSessionFactory.cs
@@ -24,7 +24,7 @@ public AppSessionFactory(Microsoft.Extensions.Logging.ILoggerFactory loggerFacto
{
db.ConnectionString = @"Server=(local)\SQLEXPRESS;initial catalog=nhibernate;Integrated Security=true";
db.Dialect();
- db.Driver();
+ db.SqlServer2008Driver();
})
.AddMapping(domainMapping);
Configuration.SessionFactory().GenerateStatistics();
diff --git a/src/NHibernate.Example.Web/NHibernate.Example.Web.csproj b/src/NHibernate.Example.Web/NHibernate.Example.Web.csproj
index 98f7c8bdf68..04fcbb41fd4 100644
--- a/src/NHibernate.Example.Web/NHibernate.Example.Web.csproj
+++ b/src/NHibernate.Example.Web/NHibernate.Example.Web.csproj
@@ -29,6 +29,7 @@
+
diff --git a/src/NHibernate.Test/App.config b/src/NHibernate.Test/App.config
index d3965012af5..e81be0b5a1d 100644
--- a/src/NHibernate.Test/App.config
+++ b/src/NHibernate.Test/App.config
@@ -30,7 +30,7 @@
NHibernate.Dialect.MsSql2008Dialect
- NHibernate.Driver.Sql2008ClientDriver
+ NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer
Server=localhost\sqlexpress;Database=nhibernate;Integrated Security=SSPI
NHibernate.Test.DebugConnectionProvider, NHibernate.Test
ReadCommitted
diff --git a/src/NHibernate.Test/Async/CfgTest/ConfigurationFixture.cs b/src/NHibernate.Test/Async/CfgTest/ConfigurationFixture.cs
index 9855db73094..8a4e813eab4 100644
--- a/src/NHibernate.Test/Async/CfgTest/ConfigurationFixture.cs
+++ b/src/NHibernate.Test/Async/CfgTest/ConfigurationFixture.cs
@@ -44,7 +44,7 @@ public async Task ManualConfigurationAsync()
props[Environment.ConnectionProvider] = "NHibernate.Connection.DriverConnectionProvider";
props[Environment.Dialect] = "NHibernate.Dialect.MsSql2000Dialect";
- props[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver";
+ props[Environment.ConnectionDriver] = "NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer";
props[Environment.ConnectionString] =
"Server=localhost;initial catalog=nhibernate;Integrated Security=SSPI";
diff --git a/src/NHibernate.Test/Async/DriverTest/FirebirdClientDriverFixture.cs b/src/NHibernate.Test/Async/DriverTest/FirebirdClientDriverFixture.cs
index 734866bda0c..df95610b93b 100644
--- a/src/NHibernate.Test/Async/DriverTest/FirebirdClientDriverFixture.cs
+++ b/src/NHibernate.Test/Async/DriverTest/FirebirdClientDriverFixture.cs
@@ -21,6 +21,7 @@ namespace NHibernate.Test.DriverTest
using System.Threading.Tasks;
using System.Threading;
[TestFixture]
+ [Obsolete("Uses old driver")]
public class FirebirdClientDriverFixtureAsync
{
private string _connectionString;
diff --git a/src/NHibernate.Test/Async/DriverTest/FirebirdDriverFixture.cs b/src/NHibernate.Test/Async/DriverTest/FirebirdDriverFixture.cs
new file mode 100644
index 00000000000..cb0ab53d9cc
--- /dev/null
+++ b/src/NHibernate.Test/Async/DriverTest/FirebirdDriverFixture.cs
@@ -0,0 +1,201 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System;
+using System.Data;
+using System.Data.Common;
+using NHibernate.Driver;
+using NHibernate.SqlCommand;
+using NHibernate.SqlTypes;
+using NUnit.Framework;
+
+namespace NHibernate.Test.DriverTest
+{
+ using System.Threading.Tasks;
+ using System.Threading;
+ [TestFixture]
+ public class FirebirdDriverFixtureAsync
+ {
+ private string _connectionString;
+ private FirebirdDriver _driver;
+
+ [OneTimeSetUp]
+ public void OneTimeSetup()
+ {
+ var cfg = TestConfigurationHelper.GetDefaultConfiguration();
+
+ var dlct = cfg.GetProperty("dialect");
+ if (!dlct.Contains("Firebird"))
+ Assert.Ignore("Applies only to Firebird");
+
+ _driver = new FirebirdDriver();
+ _driver.Configure(cfg.Properties);
+ _connectionString = cfg.GetProperty("connection.connection_string");
+ }
+
+ [Test]
+ public async Task ConnectionPooling_OpenThenCloseThenOpenAnotherOne_OnlyOneConnectionIsPooledAsync()
+ {
+ _driver.ClearPool(_connectionString);
+
+ var allreadyEstablished = await (GetEstablishedConnectionsAsync());
+
+ using (var connection1 = MakeConnection())
+ using (var connection2 = MakeConnection())
+ {
+ //open first connection
+ await (connection1.OpenAsync());
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 1, "After first open"));
+
+ //return it to the pool
+ connection1.Close();
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 1, "After first close"));
+
+ //open the second connection
+ await (connection2.OpenAsync());
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 1, "After second open"));
+
+ //return it to the pool
+ connection2.Close();
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 1, "After second close"));
+ }
+ }
+
+ [Test]
+ public async Task ConnectionPooling_OpenThenCloseTwoAtTheSameTime_TowConnectionsArePooledAsync()
+ {
+ _driver.ClearPool(_connectionString);
+
+ var allreadyEstablished = await (GetEstablishedConnectionsAsync());
+
+ using (var connection1 = MakeConnection())
+ using (var connection2 = MakeConnection())
+ {
+ //open first connection
+ await (connection1.OpenAsync());
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 1, "After first open"));
+
+ //open second one
+ await (connection2.OpenAsync());
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 2, "After second open"));
+
+ //return connection1 to the pool
+ connection1.Close();
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 2, "After first close"));
+
+ //return connection2 to the pool
+ connection2.Close();
+ await (VerifyCountOfEstablishedConnectionsIsAsync(allreadyEstablished + 2, "After second close"));
+ }
+ }
+
+ private DbConnection MakeConnection()
+ {
+ var result = _driver.CreateConnection();
+ result.ConnectionString = _connectionString;
+ return result;
+ }
+
+ private async Task VerifyCountOfEstablishedConnectionsIsAsync(int expectedCount, string step, CancellationToken cancellationToken = default(CancellationToken))
+ {
+ var physicalConnections = await (GetEstablishedConnectionsAsync(cancellationToken));
+ Assert.That(physicalConnections, Is.EqualTo(expectedCount), step);
+ }
+
+ private async Task GetEstablishedConnectionsAsync(CancellationToken cancellationToken = default(CancellationToken))
+ {
+ using (var conn = _driver.CreateConnection())
+ {
+ conn.ConnectionString = _connectionString;
+ await (conn.OpenAsync(cancellationToken));
+ using (var cmd = conn.CreateCommand())
+ {
+ cmd.CommandText = "select count(*) from mon$attachments where mon$attachment_id <> current_connection";
+ return Convert.ToInt32(await (cmd.ExecuteScalarAsync(cancellationToken)));
+ }
+ }
+ }
+
+ private DbCommand BuildSelectCaseCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("select (case when col = ")
+ .AddParameter()
+ .Add(" then ")
+ .AddParameter()
+ .Add(" else ")
+ .AddParameter()
+ .Add(" end) from table")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType, paramType, paramType });
+ }
+
+ private DbCommand BuildSelectConcatCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("select col || ")
+ .AddParameter()
+ .Add(" || ")
+ .Add("col ")
+ .Add("from table")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildSelectAddCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("select col + ")
+ .AddParameter()
+ .Add(" from table")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildInsertWithParamsInSelectCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("insert into table1 (col1, col2) ")
+ .Add("select col1, ")
+ .AddParameter()
+ .Add(" from table2")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildInsertWithParamsInSelectCommandWithSelectInColumnName(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("insert into table1 (col1_select_aaa) ")
+ .Add("values(")
+ .AddParameter()
+ .Add(") from table2")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildInsertWithParamsInSelectCommandWithWhereInColumnName(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("insert into table1 (col1_where_aaa) ")
+ .Add("values(")
+ .AddParameter()
+ .Add(") from table2")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+ }
+}
diff --git a/src/NHibernate.Test/Async/DriverTest/ObsoleteDriverFixture.cs b/src/NHibernate.Test/Async/DriverTest/ObsoleteDriverFixture.cs
new file mode 100644
index 00000000000..09fa703e1da
--- /dev/null
+++ b/src/NHibernate.Test/Async/DriverTest/ObsoleteDriverFixture.cs
@@ -0,0 +1,101 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System;
+using System.Collections;
+using System.Linq.Dynamic.Core;
+using NHibernate.Cfg;
+using NHibernate.Connection;
+using NHibernate.Dialect;
+using NHibernate.DomainModel;
+using NHibernate.Driver;
+using NHibernate.Util;
+using NUnit.Framework;
+
+namespace NHibernate.Test.DriverTest
+{
+ using System.Threading.Tasks;
+ [TestFixture, Obsolete]
+ public class ObsoleteDriverFixtureAsync : TestCase
+ {
+ protected override IList Mappings => new [] {"Simple.hbm.xml"};
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ switch (dialect)
+ {
+ case FirebirdDialect _:
+ case MsSql2000Dialect _:
+ case MsSqlCeDialect _:
+ case MySQLDialect _:
+ case PostgreSQLDialect _:
+ case SQLiteDialect _:
+ System.Type driverType = ReflectHelper.ClassForName(cfg.GetProperty(Cfg.Environment.ConnectionDriver));
+ return !(driverType.IsOdbcDriver() || driverType.IsOleDbDriver());
+ default:
+ return false;
+ }
+ }
+
+ protected override void Configure(Configuration configuration)
+ {
+ base.Configure(configuration);
+
+ System.Type driverType = ReflectHelper.ClassForName(cfg.GetProperty(Cfg.Environment.ConnectionDriver));
+ if (driverType.IsOdbcDriver() || driverType.IsOleDbDriver())
+ {
+ // ODBC and OLE DB drivers are not obsoleted, do not switch it.
+ return;
+ }
+
+ var dialect = NHibernate.Dialect.Dialect.GetDialect(configuration.Properties);
+ System.Type driver;
+ switch (dialect)
+ {
+ case FirebirdDialect _:
+ driver = typeof(FirebirdClientDriver);
+ break;
+ case MsSql2008Dialect _:
+ driver = typeof(Sql2008ClientDriver);
+ break;
+ case MsSql2000Dialect _:
+ driver = typeof(SqlClientDriver);
+ break;
+ case MsSqlCeDialect _:
+ driver = typeof(SqlServerCeDriver);
+ break;
+ case MySQLDialect _:
+ driver = typeof(MySqlDataDriver);
+ break;
+ case PostgreSQLDialect _:
+ driver = typeof(NpgsqlDriver);
+ break;
+ case SQLiteDialect _:
+ driver = typeof(SQLite20Driver);
+ break;
+ default:
+ return;
+ }
+ configuration.SetProperty(Cfg.Environment.ConnectionDriver, driver.FullName);
+ }
+
+ [Test]
+ public async Task CanUseObsoleteDriverAsync()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var count = s.Query().Count();
+ Assert.That(count, Is.Zero);
+ await (t.CommitAsync());
+ }
+ }
+ }
+}
diff --git a/src/NHibernate.Test/Async/DriverTest/OdbcDriverFixture.cs b/src/NHibernate.Test/Async/DriverTest/OdbcDriverFixture.cs
index a0f0f8664f9..afecb1a49f3 100644
--- a/src/NHibernate.Test/Async/DriverTest/OdbcDriverFixture.cs
+++ b/src/NHibernate.Test/Async/DriverTest/OdbcDriverFixture.cs
@@ -8,10 +8,8 @@
//------------------------------------------------------------------------------
-using System;
using System.Collections;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -32,7 +30,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is OdbcDriver;
+ return factory.ConnectionProvider.Driver.IsOdbcDriver();
}
protected override void OnTearDown()
diff --git a/src/NHibernate.Test/Async/DriverTest/SqlClientDriverFixture.cs b/src/NHibernate.Test/Async/DriverTest/SqlServerDriverFixture.cs
similarity index 97%
rename from src/NHibernate.Test/Async/DriverTest/SqlClientDriverFixture.cs
rename to src/NHibernate.Test/Async/DriverTest/SqlServerDriverFixture.cs
index 62fe9232900..d98674b1552 100644
--- a/src/NHibernate.Test/Async/DriverTest/SqlClientDriverFixture.cs
+++ b/src/NHibernate.Test/Async/DriverTest/SqlServerDriverFixture.cs
@@ -12,7 +12,6 @@
using System.Collections;
using System.Data;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlTypes;
using NUnit.Framework;
@@ -23,7 +22,7 @@ namespace NHibernate.Test.DriverTest
using System.Threading.Tasks;
[TestFixture]
- public class SqlClientDriverFixtureAsync : TestCase
+ public class SqlServerDriverFixtureAsync : TestCase
{
protected override string MappingsAssembly => "NHibernate.Test";
@@ -36,7 +35,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void OnTearDown()
diff --git a/src/NHibernate.Test/Async/ExceptionsTest/SQLExceptionConversionTest.cs b/src/NHibernate.Test/Async/ExceptionsTest/SQLExceptionConversionTest.cs
index fd65322ce8a..13e072c37f0 100644
--- a/src/NHibernate.Test/Async/ExceptionsTest/SQLExceptionConversionTest.cs
+++ b/src/NHibernate.Test/Async/ExceptionsTest/SQLExceptionConversionTest.cs
@@ -13,7 +13,6 @@
using System.Data;
using System.Data.Common;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Exceptions;
using NHibernate.Util;
@@ -43,7 +42,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
var driver = factory.ConnectionProvider.Driver;
- return !(driver is OracleDataClientDriver) && !(driver is OracleManagedDataClientDriver) && !(driver is OracleLiteDataClientDriver) && !(driver is OdbcDriver) && !(driver is OleDbDriver);
+ return !(driver.IsOracleDataClientDriver()) && !(driver.IsOracleManagedDataClientDriver()) && !(driver.IsOracleLiteDataClientDriver()) && !(driver.IsOdbcDriver()) && !(driver.IsOleDbDriver());
}
protected override void Configure(Cfg.Configuration configuration)
diff --git a/src/NHibernate.Test/Async/Futures/FallbackFixture.cs b/src/NHibernate.Test/Async/Futures/FallbackFixture.cs
index 80a2d1b6156..ddfde2275c8 100644
--- a/src/NHibernate.Test/Async/Futures/FallbackFixture.cs
+++ b/src/NHibernate.Test/Async/Futures/FallbackFixture.cs
@@ -8,6 +8,7 @@
//------------------------------------------------------------------------------
+using System;
using System.Linq;
using NHibernate.Cfg;
using NHibernate.Connection;
@@ -24,7 +25,7 @@ namespace NHibernate.Test.Futures
using System.Threading;
///
- /// I'm using a Driver which derives from SqlClientDriver to
+ /// I'm using a Driver which derives from SqlServer2000Driver to
/// return false for the SupportsMultipleQueries property. This is purely to test the way NHibernate
/// will behave when the driver that's being used does not support multiple queries... so even though
/// the test is using MsSql, it's only relevant for databases that don't support multiple queries
@@ -46,7 +47,7 @@ protected override void Configure(Configuration configuration)
base.Configure(configuration);
using (var cp = ConnectionProviderFactory.NewConnectionProvider(cfg.Properties))
{
- if (cp.Driver is SqlClientDriver)
+ if (cp.Driver.IsSqlClientDriver())
{
configuration.Properties[Environment.ConnectionDriver] =
typeof(TestDriverThatDoesntSupportQueryBatching).AssemblyQualifiedName;
diff --git a/src/NHibernate.Test/Async/Hql/Ast/LimitClauseFixture.cs b/src/NHibernate.Test/Async/Hql/Ast/LimitClauseFixture.cs
index 90d885db753..f9ceb3a0c7e 100644
--- a/src/NHibernate.Test/Async/Hql/Ast/LimitClauseFixture.cs
+++ b/src/NHibernate.Test/Async/Hql/Ast/LimitClauseFixture.cs
@@ -10,7 +10,6 @@
using System.Linq;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Hql.Ast.ANTLR;
using NHibernate.Util;
using NUnit.Framework;
@@ -25,7 +24,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
{
return dialect.SupportsVariableLimit
&& !(Dialect is Dialect.MsSql2000Dialect && // don't know why, but these tests don't work on SQL Server using ODBC
- typeof(OdbcDriver).IsAssignableFrom(ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver))));
+ ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsOdbcDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/Async/Insertordering/InsertOrderingFixture.cs b/src/NHibernate.Test/Async/Insertordering/InsertOrderingFixture.cs
index 79382c114d1..6528d71d1cc 100644
--- a/src/NHibernate.Test/Async/Insertordering/InsertOrderingFixture.cs
+++ b/src/NHibernate.Test/Async/Insertordering/InsertOrderingFixture.cs
@@ -18,7 +18,6 @@
using NHibernate.AdoNet;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.SqlTypes;
@@ -52,7 +51,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// Custom batcher does not support oledb driver.
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void Configure(Configuration configuration)
diff --git a/src/NHibernate.Test/Async/Linq/ByMethod/GroupByTests.cs b/src/NHibernate.Test/Async/Linq/ByMethod/GroupByTests.cs
index ca1c7c8985d..ac24728d7fb 100644
--- a/src/NHibernate.Test/Async/Linq/ByMethod/GroupByTests.cs
+++ b/src/NHibernate.Test/Async/Linq/ByMethod/GroupByTests.cs
@@ -15,7 +15,6 @@
using System.Text.RegularExpressions;
using NHibernate.Dialect;
using NHibernate.DomainModel.Northwind.Entities;
-using NHibernate.Driver;
using NHibernate.Linq;
using NUnit.Framework;
@@ -562,7 +561,7 @@ public async Task GroupByComputedValueAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.Orders.GroupBy(o => o.Customer.CustomerId == null ? 0 : 1).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -574,7 +573,7 @@ public async Task GroupByComputedValueInAnonymousTypeAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.Orders.GroupBy(o => new { Key = o.Customer.CustomerId == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -586,7 +585,7 @@ public async Task GroupByComputedValueInObjectArrayAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.Orders.GroupBy(o => new[] { o.Customer.CustomerId == null ? 0 : 1, }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -715,7 +714,7 @@ public async Task GroupByComputedValueWithJoinOnObjectAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => o.Order.Customer == null ? 0 : 1).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -727,7 +726,7 @@ public async Task GroupByComputedValueWithJoinOnIdAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => o.Order.Customer.CustomerId == null ? 0 : 1).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -739,7 +738,7 @@ public async Task GroupByComputedValueInAnonymousTypeWithJoinOnObjectAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => new { Key = o.Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -751,7 +750,7 @@ public async Task GroupByComputedValueInAnonymousTypeWithJoinOnIdAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => new { Key = o.Order.Customer.CustomerId == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -763,7 +762,7 @@ public async Task GroupByComputedValueInObjectArrayWithJoinOnObjectAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => new[] { o.Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -775,7 +774,7 @@ public async Task GroupByComputedValueInObjectArrayWithJoinOnIdAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => new[] { o.Order.Customer.CustomerId == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -787,7 +786,7 @@ public async Task GroupByComputedValueInObjectArrayWithJoinInRightSideOfCaseAsyn
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.GroupBy(o => new[] { o.Order.Customer.CustomerId == null ? "unknown" : o.Order.Customer.CompanyName }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -799,7 +798,7 @@ public async Task GroupByComputedValueFromNestedArraySelectAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.Select(o => new object[] { o }).GroupBy(x => new object[] { ((OrderLine)x[0]).Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
@@ -811,7 +810,7 @@ public async Task GroupByComputedValueFromNestedObjectSelectAsync()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = await (db.OrderLines.Select(o => new { OrderLine = (object)o }).GroupBy(x => new object[] { ((OrderLine)x.OrderLine).Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToListAsync());
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetFixture.cs
index 587100668c1..d0508910baa 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetFixture.cs
@@ -14,7 +14,6 @@
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
-using NHibernate.Driver;
using NHibernate.Type;
using NUnit.Framework;
@@ -33,7 +32,7 @@ protected override IList Mappings
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
// Cannot handle DbType.DateTimeOffset via ODBC.
- if (factory.ConnectionProvider.Driver is OdbcDriver)
+ if (factory.ConnectionProvider.Driver.IsOdbcDriver())
return false;
return base.AppliesTo(factory);
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs
index 3af6e8995e8..f2ec239effe 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs
@@ -12,7 +12,6 @@
using System.Collections;
using System.Data;
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Type;
using NUnit.Framework;
using Environment = NHibernate.Cfg.Environment;
@@ -32,7 +31,7 @@ protected override IList Mappings
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
// Cannot handle DbType.DateTimeOffset via ODBC.
- if (factory.ConnectionProvider.Driver is OdbcDriver)
+ if (factory.ConnectionProvider.Driver.IsOdbcDriver())
return false;
return base.AppliesTo(factory);
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1144/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1144/Fixture.cs
index 1e8dc255183..74ab0f13fc1 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1144/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1144/Fixture.cs
@@ -11,7 +11,6 @@
using log4net.Core;
using NHibernate.AdoNet;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Util;
using NUnit.Framework;
@@ -37,7 +36,7 @@ protected override void Configure(Configuration configuration)
[Test]
public async Task CanSaveInSingleBatchAsync()
{
- if (!typeof(OracleDataClientDriver).IsAssignableFrom(ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver))))
+ if (!ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsOracleDataClientDriver())
{
Assert.Ignore("Only applicable for Oracle Data Client driver");
}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1507/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1507/Fixture.cs
index 48a864ef62c..196797ea10d 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1507/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1507/Fixture.cs
@@ -10,7 +10,6 @@
using System;
using System.Collections;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH1507
@@ -21,7 +20,7 @@ public class FixtureAsync : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
@@ -128,4 +127,4 @@ public async Task ImplicitJoinFailingTestAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs
index 2ce5e39ce00..b1f701416de 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs
@@ -12,7 +12,6 @@
using System.Data;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
using NUnit.Framework.Constraints;
@@ -152,7 +151,7 @@ protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// SQLUpdateConflictToStaleStateExceptionConverter is specific to Sql client driver, and does not work
// with Odbc (and likeley Oledb).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
private bool _isSnapshotIsolationAlreadyAllowed;
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH1756/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH1756/Fixture.cs
index ae654b85b77..933c703d5a0 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH1756/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH1756/Fixture.cs
@@ -10,7 +10,6 @@
using System.Collections.Generic;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -41,7 +40,7 @@ protected override bool AppliesTo(ISessionFactoryImplementor factory)
// N'@P1 nvarchar(18),@P2 int,@P3 datetime2',N'modified test book',1,'2017-08-02 16:37:16.0630000'
// Setting the scale to 2 still causes failure for two thirds of tries, due to 3ms/7ms being truncated in such case
// with ODBC and SQL Server 2008+ Client, which is rejected by ODBC.
- return !(factory.ConnectionProvider.Driver is OdbcDriver);
+ return !(factory.ConnectionProvider.Driver.IsOdbcDriver());
}
[Test]
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2020/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2020/Fixture.cs
index f3376f32a6d..378cc5fba14 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2020/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2020/Fixture.cs
@@ -10,7 +10,6 @@
using NUnit.Framework;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Exceptions;
using NHibernate.Test.ExceptionsTest;
using NHibernate.Engine;
@@ -37,7 +36,7 @@ protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// Use a SQL Server Client exception converter, cannot work for ODBC or OleDb
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void OnTearDown()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2207/SampleTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2207/SampleTest.cs
index dd26d362887..a27f4fc039f 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2207/SampleTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2207/SampleTest.cs
@@ -11,7 +11,6 @@
using System;
using System.Data;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -29,7 +28,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is Sql2008ClientDriver;
+ return factory.ConnectionProvider.Driver.IsSql2008ClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2296/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2296/Fixture.cs
index 28a2d60d9c5..8ee9d680433 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2296/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2296/Fixture.cs
@@ -9,7 +9,6 @@
using System.Linq;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH2296
@@ -20,7 +19,7 @@ public class FixtureAsync : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
@@ -84,4 +83,4 @@ public async Task TestAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2302/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2302/Fixture.cs
index df16c52023c..2ca311d4ae5 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2302/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2302/Fixture.cs
@@ -10,7 +10,6 @@
using System.Data;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Mapping;
using NUnit.Framework;
@@ -49,7 +48,7 @@ protected override void OnTearDown()
[Test]
public async Task StringHugeLengthAsync()
{
- if (Sfi.ConnectionProvider.Driver is OdbcDriver || Dialect is MsSqlCeDialect)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver() || Dialect is MsSqlCeDialect)
Assert.Ignore("NH-4065, not fixed for Odbc and MsSqlCe");
int id;
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2420/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2420/Fixture.cs
index 0f71ee82087..132a84ec8cf 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2420/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2420/Fixture.cs
@@ -14,7 +14,6 @@
using System.Configuration;
using System.Transactions;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -73,7 +72,7 @@ public async Task ShouldBeAbleToReleaseSuppliedConnectionAfterDistributedTransac
new DummyEnlistment(),
EnlistmentOptions.None);
- if (Sfi.ConnectionProvider.Driver.GetType() == typeof(OdbcDriver))
+ if (Sfi.ConnectionProvider.Driver.GetType().IsOdbcDriver())
connection = new OdbcConnection(connectionString);
else
connection = new SqlConnection(connectionString);
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2660And2661/Test.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2660And2661/Test.cs
index d13589002f3..8cc9f87f061 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2660And2661/Test.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2660And2661/Test.cs
@@ -50,7 +50,7 @@ protected override void Configure(Configuration configuration)
{
// to be sure we are using the new drive
base.Configure(configuration);
- configuration.DataBaseIntegration(x=> x.Driver());
+ configuration.DataBaseIntegration(x=> x.Driver());
}
[Test]
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2846/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2846/Fixture.cs
index 71a6dd7fb6d..f09fd96c407 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2846/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2846/Fixture.cs
@@ -9,7 +9,6 @@
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Linq;
using NUnit.Framework;
@@ -21,7 +20,7 @@ public class FixtureAsync : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH2852/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH2852/Fixture.cs
index 4bd4d82cabe..4b92853bb40 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH2852/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH2852/Fixture.cs
@@ -9,7 +9,6 @@
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Linq;
using NUnit.Framework;
@@ -21,7 +20,7 @@ public class FixtureAsync : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
@@ -92,4 +91,4 @@ public async Task AlsoFailsAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs
index 052557dc4c0..f569b887c95 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs
@@ -20,7 +20,6 @@
using log4net.Repository.Hierarchy;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -43,7 +42,7 @@ protected override void Configure(Configuration configuration)
// Uses directly SqlConnection.
protected override bool AppliesTo(ISessionFactoryImplementor factory) =>
- factory.ConnectionProvider.Driver is SqlClientDriver &&
+ factory.ConnectionProvider.Driver.IsSqlClientDriver() &&
factory.ConnectionProvider.Driver.SupportsSystemTransactions;
protected override bool AppliesTo(Dialect.Dialect dialect) =>
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3121/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3121/Fixture.cs
index 525c4b3d6c2..d6d708231e5 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3121/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3121/Fixture.cs
@@ -13,7 +13,6 @@
using System.Linq;
using System.Reflection;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH3121
@@ -36,10 +35,10 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
[Test]
public void ShouldThrowWhenByteArrayTooLongAsync()
{
- // For SQL Server only the SqlClientDriver sets parameter lengths
+ // For SQL Server only the SqlServer2000Driver sets parameter lengths
// even when there is no length specified in the mapping. The ODBC
// driver won't cause the truncation issue and hence not the exception.
- if (!(Sfi.ConnectionProvider.Driver is SqlClientDriver))
+ if (!(Sfi.ConnectionProvider.Driver.IsSqlClientDriver()))
Assert.Ignore("Test limited to drivers that sets parameter length even with no length specified in the mapping.");
const int reportSize = 17158;
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3142/ChildrenTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3142/ChildrenTest.cs
index c5f420db6de..52f9f3fd726 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3142/ChildrenTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3142/ChildrenTest.cs
@@ -11,7 +11,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH3142
@@ -22,7 +21,7 @@ public class ChildrenTestAsync : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3202/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3202/Fixture.cs
index 61a8bf45526..8793de14f64 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3202/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3202/Fixture.cs
@@ -27,7 +27,7 @@ protected override void Configure(Configuration configuration)
if (!(Dialect is MsSql2008Dialect))
Assert.Ignore("Test is for MS SQL Server dialect only (custom dialect).");
- if (!typeof(SqlClientDriver).IsAssignableFrom(ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver))))
+ if (!ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsSqlClientDriver())
Assert.Ignore("Test is for MS SQL Server driver only (custom driver is used).");
cfg.SetProperty(Environment.Dialect, typeof(OffsetStartsAtOneTestDialect).AssemblyQualifiedName);
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3202/FixtureObsolete.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3202/FixtureObsolete.cs
new file mode 100644
index 00000000000..26ae06fe297
--- /dev/null
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3202/FixtureObsolete.cs
@@ -0,0 +1,114 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by AsyncGenerator.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+
+using System;
+using System.Data.Common;
+using System.Text.RegularExpressions;
+using NHibernate.Cfg;
+using NHibernate.Dialect;
+using NHibernate.Driver;
+using NHibernate.Util;
+using NUnit.Framework;
+using Environment = NHibernate.Cfg.Environment;
+
+namespace NHibernate.Test.NHSpecificTest.NH3202
+{
+ using System.Threading.Tasks;
+ [TestFixture]
+ [Obsolete("Uses old driver")]
+ public class FixtureObsoleteAsync : BugTestCase
+ {
+ protected override void Configure(Configuration configuration)
+ {
+ if (!(Dialect is MsSql2008Dialect))
+ Assert.Ignore("Test is for MS SQL Server dialect only (custom dialect).");
+
+ if (!ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsSqlClientDriver())
+ Assert.Ignore("Test is for MS SQL Server driver only (custom driver is used).");
+
+ cfg.SetProperty(Environment.Dialect, typeof(OffsetStartsAtOneTestDialect).AssemblyQualifiedName);
+ cfg.SetProperty(Environment.ConnectionDriver, typeof(OffsetTestObsoleteDriver).AssemblyQualifiedName);
+ }
+
+ private OffsetStartsAtOneTestDialect OffsetStartsAtOneTestDialect
+ {
+ get { return (OffsetStartsAtOneTestDialect)Sfi.Dialect; }
+ }
+
+ private OffsetTestObsoleteDriver CustomDriver
+ {
+ get { return (OffsetTestObsoleteDriver)Sfi.ConnectionProvider.Driver; }
+ }
+
+ protected override void OnSetUp()
+ {
+ CustomDriver.OffsetStartsAtOneTestDialect = OffsetStartsAtOneTestDialect;
+
+ base.OnSetUp();
+
+ using (var session = OpenSession())
+ using (var transaction = session.BeginTransaction())
+ {
+ session.Save(new SequencedItem(1));
+ session.Save(new SequencedItem(2));
+ session.Save(new SequencedItem(3));
+
+ session.Flush();
+ transaction.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.Delete("from SequencedItem");
+ t.Commit();
+ }
+ base.OnTearDown();
+ }
+
+
+ [Test]
+ public async Task OffsetNotStartingAtOneSetsParameterToSkipValueAsync()
+ {
+ OffsetStartsAtOneTestDialect.ForceOffsetStartsAtOne = false;
+
+ using (var session = OpenSession())
+ {
+ var item2 =
+ await (session.QueryOver()
+ .OrderBy(i => i.I).Asc
+ .Take(1).Skip(2)
+ .SingleOrDefaultAsync());
+
+ Assert.That(CustomDriver.OffsetParameterValueFromCommand, Is.EqualTo(2));
+ }
+ }
+
+ [Test]
+ public async Task OffsetStartingAtOneSetsParameterToSkipValuePlusOneAsync()
+ {
+ OffsetStartsAtOneTestDialect.ForceOffsetStartsAtOne = true;
+
+ using (var session = OpenSession())
+ {
+ var item2 =
+ await (session.QueryOver()
+ .OrderBy(i => i.I).Asc
+ .Take(1).Skip(2)
+ .SingleOrDefaultAsync());
+
+ Assert.That(CustomDriver.OffsetParameterValueFromCommand, Is.EqualTo(3));
+ }
+ }
+ }
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3252/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3252/Fixture.cs
index 3f2dd8084a8..c3c0021e44c 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3252/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3252/Fixture.cs
@@ -10,7 +10,6 @@
using System;
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NUnit.Framework;
@@ -23,7 +22,7 @@ public class FixtureAsync : BugTestCase
{
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3518/XmlColumnTest.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3518/XmlColumnTest.cs
index 31b08659374..52b1ff0bff1 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3518/XmlColumnTest.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3518/XmlColumnTest.cs
@@ -11,7 +11,6 @@
using System.Xml;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -38,7 +37,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void Configure(Configuration configuration)
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3620/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3620/Fixture.cs
index 076371afdfa..572b9668a45 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3620/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3620/Fixture.cs
@@ -9,7 +9,6 @@
using System;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH3620 {
@@ -17,7 +16,7 @@ namespace NHibernate.Test.NHSpecificTest.NH3620 {
[TestFixture]
public class FixtureAsync : BugTestCase {
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) {
- return (factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return (factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnTearDown() {
@@ -52,4 +51,4 @@ private void CleanupData() {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3844/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3844/Fixture.cs
index 006536ab127..461c718c0d0 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3844/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3844/Fixture.cs
@@ -9,7 +9,6 @@
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NUnit.Framework;
@@ -28,7 +27,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// SQL Server seems unable to match complex group by and select list arguments when running over ODBC.";
- return !(factory.ConnectionProvider.Driver is OdbcDriver);
+ return !(factory.ConnectionProvider.Driver.IsOdbcDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3850/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3850/Fixture.cs
index c0ee2b089dd..e95b1dd4740 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3850/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3850/Fixture.cs
@@ -15,7 +15,6 @@
using System.Linq;
using System.Reflection;
using System.Text;
-using NHibernate.Driver;
using NHibernate.Linq;
using NHibernate.SqlTypes;
using NHibernate.Util;
@@ -42,7 +41,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
// Cannot handle DbType.DateTimeOffset via ODBC.
- return !(factory.ConnectionProvider.Driver is OdbcDriver);
+ return !(factory.ConnectionProvider.Driver.IsOdbcDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/NH3912/ReusableBatcherFixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/NH3912/ReusableBatcherFixture.cs
index d5bbb05a2be..11323f53134 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/NH3912/ReusableBatcherFixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/NH3912/ReusableBatcherFixture.cs
@@ -13,7 +13,6 @@
using NHibernate.AdoNet;
using NHibernate.Cfg;
using NHibernate.Cfg.MappingSchema;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NHibernate.Mapping.ByCode;
@@ -28,9 +27,9 @@ public class ReusableBatcherFixtureAsync : TestCaseMappingByCode
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
var driver = factory.ConnectionProvider.Driver;
- return driver is OracleDataClientDriver ||
- driver is OracleLiteDataClientDriver ||
- driver is OracleManagedDataClientDriver;
+ return driver.IsOracleDataClientDriver() ||
+ driver.IsOracleLiteDataClientDriver() ||
+ driver.IsOracleManagedDataClientDriver();
}
protected override HbmMapping GetMappings()
diff --git a/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs b/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs
index fc8c339848e..86c87c2eb22 100644
--- a/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs
+++ b/src/NHibernate.Test/Async/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs
@@ -9,7 +9,6 @@
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -32,7 +31,7 @@ protected override bool AppliesTo(ISessionFactoryImplementor factory)
// 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;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/Async/Pagination/CustomDialectFixture.cs b/src/NHibernate.Test/Async/Pagination/CustomDialectFixture.cs
index 49bd4e48bfb..c47813308f6 100644
--- a/src/NHibernate.Test/Async/Pagination/CustomDialectFixture.cs
+++ b/src/NHibernate.Test/Async/Pagination/CustomDialectFixture.cs
@@ -13,7 +13,6 @@
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Util;
using NUnit.Framework;
using Environment = NHibernate.Cfg.Environment;
@@ -40,7 +39,7 @@ protected override void Configure(Configuration configuration)
if (!(Dialect is MsSql2005Dialect))
Assert.Ignore("Test is for SQL dialect only");
var driverClass = ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver));
- if (!typeof(SqlClientDriver).IsAssignableFrom(driverClass))
+ if (!driverClass.IsSqlClientDriver())
Assert.Ignore("Test is compatible only with Sql Server Client driver connection strings");
cfg.SetProperty(Environment.Dialect, typeof(CustomMsSqlDialect).AssemblyQualifiedName);
@@ -134,4 +133,4 @@ public async Task LimitFirstMultiCriteriaAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs b/src/NHibernate.Test/Async/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs
index c8c2ec8e31b..759606691fa 100644
--- a/src/NHibernate.Test/Async/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs
+++ b/src/NHibernate.Test/Async/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs
@@ -25,7 +25,7 @@ protected override IList Mappings
protected override bool AppliesTo(NHibernate.Engine.ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is Driver.OracleDataClientDriver;
+ return factory.ConnectionProvider.Driver.IsOracleDataClientDriver();
}
protected override bool AppliesTo(Dialect.Dialect dialect)
@@ -68,4 +68,4 @@ public async Task RefCursorOutStoredProcedureAsync()
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs b/src/NHibernate.Test/Async/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs
index 82c57049d41..609f4d42242 100644
--- a/src/NHibernate.Test/Async/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs
+++ b/src/NHibernate.Test/Async/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs
@@ -10,7 +10,6 @@
using System.Collections;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -28,7 +27,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// Tested resulting SQL depends on driver.
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override string GetExpectedInsertOrgLogStatement(string orgName)
diff --git a/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs b/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs
index c9dc337df13..cf17f86b268 100644
--- a/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs
+++ b/src/NHibernate.Test/Async/SystemTransactions/SystemTransactionFixture.cs
@@ -14,11 +14,10 @@
using System.Threading;
using System.Transactions;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Engine;
-using NHibernate.Linq;
using NHibernate.Test.TransactionTest;
using NUnit.Framework;
+using NHibernate.Linq;
namespace NHibernate.Test.SystemTransactions
{
@@ -190,7 +189,7 @@ public async Task CanUseSessionWithManyScopesAsync(bool explicitFlush)
// ODBC with SQL-Server always causes scopes to go distributed, which causes their transaction completion to run
// asynchronously. But ODBC enlistment also check the previous transaction in a way that do not guard against it
// being concurrently disposed of. See https://github.com/nhibernate/nhibernate-core/pull/1505 for more details.
- Assume.That(!(Sfi.ConnectionProvider.Driver is OdbcDriver),
+ Assume.That(!(Sfi.ConnectionProvider.Driver.IsOdbcDriver()),
"ODBC sometimes fails on second scope by checking the previous transaction status, which may yield an object disposed exception");
using (var s = WithOptions().ConnectionReleaseMode(ConnectionReleaseMode.OnClose).OpenSession())
diff --git a/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs b/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs
index 9e8f4dcf332..d9b9c86f62b 100644
--- a/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs
+++ b/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs
@@ -12,7 +12,6 @@
using System.Collections.Generic;
using System.Linq;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Mapping;
using NHibernate.Tool.hbm2ddl;
@@ -116,7 +115,7 @@ public async Task EnsureReservedWordsHardCodedInDialectAsync()
}
}
- if (sf.ConnectionProvider.Driver is OdbcDriver)
+ if (sf.ConnectionProvider.Driver.IsOdbcDriver())
{
Assert.Inconclusive("ODBC has excess keywords reserved");
}
@@ -252,7 +251,7 @@ public async Task WhenConfiguredOnlyExplicitAutoQuoteAsync()
var configuration = TestConfigurationHelper.GetDefaultConfiguration();
var driverClass = ReflectHelper.ClassForName(configuration.GetProperty(Environment.ConnectionDriver));
// Test uses the default dialect driver, which will not accept Odbc or OleDb connection strings.
- if (typeof(OdbcDriver).IsAssignableFrom(driverClass) || typeof(OleDbDriver).IsAssignableFrom(driverClass))
+ if (driverClass.IsOdbcDriver() || driverClass.IsOleDbDriver())
Assert.Ignore("Test is not compatible with OleDb or ODBC driver connection strings");
var configuredDialect = Dialect.Dialect.GetDialect();
if(!configuredDialect.DefaultProperties.ContainsKey(Environment.ConnectionDriver))
diff --git a/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs b/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs
index 6dee59c9771..9b5f2960157 100644
--- a/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs
+++ b/src/NHibernate.Test/Async/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs
@@ -12,7 +12,6 @@
using System.IO;
using System.Reflection;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Util;
using NUnit.Framework;
@@ -31,7 +30,7 @@ public class MigrationFixtureAsync
var driverClass = ReflectHelper.ClassForName(v1cfg.GetProperty(Environment.ConnectionDriver));
// Odbc is not supported by schema update: System.Data.Odbc.OdbcConnection.GetSchema("ForeignKeys") fails with an ArgumentException: ForeignKeys is undefined.
// It seems it would require its own DataBaseSchema, but this is bound to the dialect, not the driver.
- if (typeof(OdbcDriver).IsAssignableFrom(driverClass))
+ if (driverClass.IsOdbcDriver())
Assert.Ignore("Test is not compatible with ODBC");
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource1))
@@ -91,4 +90,4 @@ public Task SimpleColumnReplaceAsync()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Async/TypesTest/DateTime2TypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/DateTime2TypeFixture.cs
index e30eaa872aa..6751cca00c4 100644
--- a/src/NHibernate.Test/Async/TypesTest/DateTime2TypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/DateTime2TypeFixture.cs
@@ -9,7 +9,6 @@
using System;
-using NHibernate.Driver;
using NHibernate.SqlTypes;
using NHibernate.Type;
using NUnit.Framework;
@@ -29,7 +28,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) =>
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) =>
// Cannot handle DbType.DateTime2 via .Net ODBC.
- !(factory.ConnectionProvider.Driver is OdbcDriver);
+ !(factory.ConnectionProvider.Driver.IsOdbcDriver());
protected override string TypeName => "DateTime2";
protected override AbstractDateTimeType Type => NHibernateUtil.DateTime2;
@@ -44,7 +43,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) =>
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) =>
// Cannot handle DbType.DateTime2 via .Net ODBC.
- !(factory.ConnectionProvider.Driver is OdbcDriver);
+ !(factory.ConnectionProvider.Driver.IsOdbcDriver());
protected override string TypeName => "DateTime2WithScale";
protected override AbstractDateTimeType Type => (AbstractDateTimeType)TypeFactory.GetDateTime2Type(3);
diff --git a/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs
index a6ef854fad2..bab0c914f73 100644
--- a/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/DateTimeOffsetTypeFixture.cs
@@ -12,7 +12,6 @@
using System.Data;
using System.Linq;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.SqlTypes;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Type;
@@ -38,7 +37,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) =>
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) =>
// Cannot handle DbType.DateTimeOffset via .Net ODBC.
- !(factory.ConnectionProvider.Driver is OdbcDriver);
+ !(factory.ConnectionProvider.Driver.IsOdbcDriver());
protected override void Configure(Configuration configuration)
{
diff --git a/src/NHibernate.Test/Async/TypesTest/StringTypeWithLengthFixture.cs b/src/NHibernate.Test/Async/TypesTest/StringTypeWithLengthFixture.cs
index be75a5c5805..d75cb3b086c 100644
--- a/src/NHibernate.Test/Async/TypesTest/StringTypeWithLengthFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/StringTypeWithLengthFixture.cs
@@ -13,7 +13,6 @@
using NHibernate.Cfg.MappingSchema;
using NHibernate.Criterion;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Exceptions;
using NHibernate.Mapping.ByCode;
using NUnit.Framework;
@@ -81,7 +80,7 @@ public Task ShouldPreventInsertionOfVeryLongStringThatWouldBeTruncatedAsync()
try
{
// This test case is for when the current driver will use a parameter size
- // that is significantly larger than the mapped column size (e.g. SqlClientDriver currently).
+ // that is significantly larger than the mapped column size (e.g. SqlServer2000Driver currently).
// Note: This test could possible be written as
// "database must raise an error OR it must store and return the full value"
@@ -139,7 +138,7 @@ public async Task CanCompareLongValueWithLongStringAsync()
{
var maxStringLength = GetLongStringMappedLength();
- if (Sfi.ConnectionProvider.Driver is OdbcDriver && maxStringLength >= 2000)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver() && maxStringLength >= 2000)
Assert.Ignore("Odbc wrecks nvarchar parameter types when they are longer than 2000, it switch them to ntext");
var longString = new string('x', maxStringLength);
diff --git a/src/NHibernate.Test/Async/TypesTest/XDocTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/XDocTypeFixture.cs
index b7fae9dc5c2..d2d0fb8afaf 100644
--- a/src/NHibernate.Test/Async/TypesTest/XDocTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/XDocTypeFixture.cs
@@ -10,7 +10,6 @@
using System.Data;
using System.Xml.Linq;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlTypes;
using NHibernate.Type;
@@ -35,7 +34,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// No Xml support with Odbc (and likely OleDb too).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/Async/TypesTest/XmlDocTypeFixture.cs b/src/NHibernate.Test/Async/TypesTest/XmlDocTypeFixture.cs
index bc975d62590..83db7e7df9e 100644
--- a/src/NHibernate.Test/Async/TypesTest/XmlDocTypeFixture.cs
+++ b/src/NHibernate.Test/Async/TypesTest/XmlDocTypeFixture.cs
@@ -10,7 +10,6 @@
using System.Data;
using System.Xml;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlTypes;
using NHibernate.Type;
@@ -35,7 +34,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// No Xml support with Odbc (and likely OleDb too).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/CfgTest/ConfigurationFixture.cs b/src/NHibernate.Test/CfgTest/ConfigurationFixture.cs
index 73a2b9671f4..3abf3b05cdb 100644
--- a/src/NHibernate.Test/CfgTest/ConfigurationFixture.cs
+++ b/src/NHibernate.Test/CfgTest/ConfigurationFixture.cs
@@ -52,7 +52,7 @@ public void ManualConfiguration()
props[Environment.ConnectionProvider] = "NHibernate.Connection.DriverConnectionProvider";
props[Environment.Dialect] = "NHibernate.Dialect.MsSql2000Dialect";
- props[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver";
+ props[Environment.ConnectionDriver] = "NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer";
props[Environment.ConnectionString] =
"Server=localhost;initial catalog=nhibernate;Integrated Security=SSPI";
diff --git a/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs b/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs
index d9b94d355de..1ae077347c5 100644
--- a/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs
+++ b/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs
@@ -53,7 +53,7 @@ public void CompleteConfiguration()
#endif
.Connected
.Through()
- .By()
+ .By()
.Releasing(ConnectionReleaseMode.AfterTransaction)
.With(IsolationLevel.ReadCommitted)
.Using(connectionString)
@@ -87,7 +87,7 @@ public void CompleteConfiguration()
Assert.That(cfg.Properties[Environment.BatchSize], Is.EqualTo("15"));
#endif
Assert.That(cfg.Properties[Environment.ConnectionProvider], Is.EqualTo(typeof(DebugConnectionProvider).AssemblyQualifiedName));
- Assert.That(cfg.Properties[Environment.ConnectionDriver], Is.EqualTo(typeof(SqlClientDriver).AssemblyQualifiedName));
+ Assert.That(cfg.Properties[Environment.ConnectionDriver], Is.EqualTo(typeof(SqlServer2000Driver).AssemblyQualifiedName));
Assert.That(cfg.Properties[Environment.ReleaseConnections], Is.EqualTo(ConnectionReleaseModeParser.ToString(ConnectionReleaseMode.AfterTransaction)));
Assert.That(cfg.Properties[Environment.Isolation], Is.EqualTo("ReadCommitted"));
Assert.That(cfg.Properties[Environment.ConnectionString], Is.EqualTo(connectionString));
diff --git a/src/NHibernate.Test/CfgTest/Loquacious/LambdaConfigurationFixture.cs b/src/NHibernate.Test/CfgTest/Loquacious/LambdaConfigurationFixture.cs
index f422035fd85..62e857d73bf 100644
--- a/src/NHibernate.Test/CfgTest/Loquacious/LambdaConfigurationFixture.cs
+++ b/src/NHibernate.Test/CfgTest/Loquacious/LambdaConfigurationFixture.cs
@@ -51,7 +51,7 @@ public void FullConfiguration()
#endif
db.BatchSize = 15;
db.ConnectionProvider();
- db.Driver();
+ db.Driver();
db.ConnectionReleaseMode = ConnectionReleaseMode.AfterTransaction;
db.IsolationLevel = IsolationLevel.ReadCommitted;
db.ConnectionString = "The connection string";
@@ -92,7 +92,7 @@ public void FullConfiguration()
Assert.That(configure.Properties[Environment.ConnectionProvider],
Is.EqualTo(typeof(DebugConnectionProvider).AssemblyQualifiedName));
Assert.That(configure.Properties[Environment.ConnectionDriver],
- Is.EqualTo(typeof(SqlClientDriver).AssemblyQualifiedName));
+ Is.EqualTo(typeof(SqlServer2000Driver).AssemblyQualifiedName));
Assert.That(configure.Properties[Environment.ReleaseConnections],
Is.EqualTo(ConnectionReleaseModeParser.ToString(ConnectionReleaseMode.AfterTransaction)));
Assert.That(configure.Properties[Environment.Isolation], Is.EqualTo("ReadCommitted"));
diff --git a/src/NHibernate.Test/DriverTest/FirebirdClientDriverFixture.cs b/src/NHibernate.Test/DriverTest/FirebirdClientDriverFixture.cs
index 2bd4177e8db..51c3df69242 100644
--- a/src/NHibernate.Test/DriverTest/FirebirdClientDriverFixture.cs
+++ b/src/NHibernate.Test/DriverTest/FirebirdClientDriverFixture.cs
@@ -9,6 +9,7 @@
namespace NHibernate.Test.DriverTest
{
[TestFixture]
+ [Obsolete("Uses old driver")]
public class FirebirdClientDriverFixture
{
private string _connectionString;
diff --git a/src/NHibernate.Test/DriverTest/FirebirdDriverFixture.cs b/src/NHibernate.Test/DriverTest/FirebirdDriverFixture.cs
new file mode 100644
index 00000000000..c7a51668cb2
--- /dev/null
+++ b/src/NHibernate.Test/DriverTest/FirebirdDriverFixture.cs
@@ -0,0 +1,275 @@
+using System;
+using System.Data;
+using System.Data.Common;
+using NHibernate.Driver;
+using NHibernate.SqlCommand;
+using NHibernate.SqlTypes;
+using NUnit.Framework;
+
+namespace NHibernate.Test.DriverTest
+{
+ [TestFixture]
+ public class FirebirdDriverFixture
+ {
+ private string _connectionString;
+ private FirebirdDriver _driver;
+
+ [OneTimeSetUp]
+ public void OneTimeSetup()
+ {
+ var cfg = TestConfigurationHelper.GetDefaultConfiguration();
+
+ var dlct = cfg.GetProperty("dialect");
+ if (!dlct.Contains("Firebird"))
+ Assert.Ignore("Applies only to Firebird");
+
+ _driver = new FirebirdDriver();
+ _driver.Configure(cfg.Properties);
+ _connectionString = cfg.GetProperty("connection.connection_string");
+ }
+
+ [Test]
+ public void ConnectionPooling_OpenThenCloseThenOpenAnotherOne_OnlyOneConnectionIsPooled()
+ {
+ _driver.ClearPool(_connectionString);
+
+ var allreadyEstablished = GetEstablishedConnections();
+
+ using (var connection1 = MakeConnection())
+ using (var connection2 = MakeConnection())
+ {
+ //open first connection
+ connection1.Open();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 1, "After first open");
+
+ //return it to the pool
+ connection1.Close();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 1, "After first close");
+
+ //open the second connection
+ connection2.Open();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 1, "After second open");
+
+ //return it to the pool
+ connection2.Close();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 1, "After second close");
+ }
+ }
+
+ [Test]
+ public void ConnectionPooling_OpenThenCloseTwoAtTheSameTime_TowConnectionsArePooled()
+ {
+ _driver.ClearPool(_connectionString);
+
+ var allreadyEstablished = GetEstablishedConnections();
+
+ using (var connection1 = MakeConnection())
+ using (var connection2 = MakeConnection())
+ {
+ //open first connection
+ connection1.Open();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 1, "After first open");
+
+ //open second one
+ connection2.Open();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 2, "After second open");
+
+ //return connection1 to the pool
+ connection1.Close();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 2, "After first close");
+
+ //return connection2 to the pool
+ connection2.Close();
+ VerifyCountOfEstablishedConnectionsIs(allreadyEstablished + 2, "After second close");
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_StringParametersWithinConditionalSelect_ThenParameterIsWrappedByAVarcharCastStatement()
+ {
+ using (var cmd = BuildSelectCaseCommand(SqlTypeFactory.GetString(255)))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expectedCommandTxt =
+ "select (case when col = @p0 then cast(@p1 as VARCHAR(4000)) else cast(@p2 as VARCHAR(4000)) end) from table";
+ Assert.That(cmd.CommandText, Is.EqualTo(expectedCommandTxt));
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_IntParametersWithinConditionalSelect_ThenParameterIsWrappedByAnIntCastStatement()
+ {
+ using (var cmd = BuildSelectCaseCommand(SqlTypeFactory.Int32))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expectedCommandTxt =
+ "select (case when col = @p0 then cast(@p1 as INTEGER) else cast(@p2 as INTEGER) end) from table";
+ Assert.That(cmd.CommandText, Is.EqualTo(expectedCommandTxt));
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_ParameterWithinSelectConcat_ParameterIsCasted()
+ {
+ using (var cmd = BuildSelectConcatCommand(SqlTypeFactory.GetString(255)))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expected = "select col || cast(@p0 as VARCHAR(4000)) || col from table";
+ Assert.That(cmd.CommandText, Is.EqualTo(expected));
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_ParameterWithinSelectAddFunction_ParameterIsCasted()
+ {
+ using (var cmd = BuildSelectAddCommand(SqlTypeFactory.GetString(255)))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expected = "select col + cast(@p0 as VARCHAR(4000)) from table";
+ Assert.That(cmd.CommandText, Is.EqualTo(expected));
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_InsertWithParamsInSelect_ParameterIsCasted()
+ {
+ using (var cmd = BuildInsertWithParamsInSelectCommand(SqlTypeFactory.Int32))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expected = "insert into table1 (col1, col2) select col1, cast(@p0 as INTEGER) from table2";
+ Assert.That(cmd.CommandText, Is.EqualTo(expected));
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_InsertWithParamsInSelect_ParameterIsNotCasted_WhenColumnNameContainsSelect()
+ {
+ using (var cmd = BuildInsertWithParamsInSelectCommandWithSelectInColumnName(SqlTypeFactory.Int32))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expected = "insert into table1 (col1_select_aaa) values(@p0) from table2";
+ Assert.That(cmd.CommandText, Is.EqualTo(expected));
+ }
+ }
+
+ [Test]
+ public void AdjustCommand_InsertWithParamsInSelect_ParameterIsNotCasted_WhenColumnNameContainsWhere()
+ {
+ using (var cmd = BuildInsertWithParamsInSelectCommandWithWhereInColumnName(SqlTypeFactory.Int32))
+ {
+ _driver.AdjustCommand(cmd);
+
+ var expected = "insert into table1 (col1_where_aaa) values(@p0) from table2";
+ Assert.That(cmd.CommandText, Is.EqualTo(expected));
+ }
+ }
+
+ private DbConnection MakeConnection()
+ {
+ var result = _driver.CreateConnection();
+ result.ConnectionString = _connectionString;
+ return result;
+ }
+
+ private void VerifyCountOfEstablishedConnectionsIs(int expectedCount, string step)
+ {
+ var physicalConnections = GetEstablishedConnections();
+ Assert.That(physicalConnections, Is.EqualTo(expectedCount), step);
+ }
+
+ private int GetEstablishedConnections()
+ {
+ using (var conn = _driver.CreateConnection())
+ {
+ conn.ConnectionString = _connectionString;
+ conn.Open();
+ using (var cmd = conn.CreateCommand())
+ {
+ cmd.CommandText = "select count(*) from mon$attachments where mon$attachment_id <> current_connection";
+ return Convert.ToInt32(cmd.ExecuteScalar());
+ }
+ }
+ }
+
+ private DbCommand BuildSelectCaseCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("select (case when col = ")
+ .AddParameter()
+ .Add(" then ")
+ .AddParameter()
+ .Add(" else ")
+ .AddParameter()
+ .Add(" end) from table")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType, paramType, paramType });
+ }
+
+ private DbCommand BuildSelectConcatCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("select col || ")
+ .AddParameter()
+ .Add(" || ")
+ .Add("col ")
+ .Add("from table")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildSelectAddCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("select col + ")
+ .AddParameter()
+ .Add(" from table")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildInsertWithParamsInSelectCommand(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("insert into table1 (col1, col2) ")
+ .Add("select col1, ")
+ .AddParameter()
+ .Add(" from table2")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildInsertWithParamsInSelectCommandWithSelectInColumnName(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("insert into table1 (col1_select_aaa) ")
+ .Add("values(")
+ .AddParameter()
+ .Add(") from table2")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+
+ private DbCommand BuildInsertWithParamsInSelectCommandWithWhereInColumnName(SqlType paramType)
+ {
+ var sqlString = new SqlStringBuilder()
+ .Add("insert into table1 (col1_where_aaa) ")
+ .Add("values(")
+ .AddParameter()
+ .Add(") from table2")
+ .ToSqlString();
+
+ return _driver.GenerateCommand(CommandType.Text, sqlString, new[] { paramType });
+ }
+ }
+}
diff --git a/src/NHibernate.Test/DriverTest/ObsoleteDriverFixture.cs b/src/NHibernate.Test/DriverTest/ObsoleteDriverFixture.cs
new file mode 100644
index 00000000000..5ef6726ac64
--- /dev/null
+++ b/src/NHibernate.Test/DriverTest/ObsoleteDriverFixture.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections;
+using System.Linq.Dynamic.Core;
+using NHibernate.Cfg;
+using NHibernate.Connection;
+using NHibernate.Dialect;
+using NHibernate.DomainModel;
+using NHibernate.Driver;
+using NHibernate.Util;
+using NUnit.Framework;
+
+namespace NHibernate.Test.DriverTest
+{
+ [TestFixture, Obsolete]
+ public class ObsoleteDriverFixture : TestCase
+ {
+ protected override IList Mappings => new [] {"Simple.hbm.xml"};
+
+ protected override bool AppliesTo(Dialect.Dialect dialect)
+ {
+ switch (dialect)
+ {
+ case FirebirdDialect _:
+ case MsSql2000Dialect _:
+ case MsSqlCeDialect _:
+ case MySQLDialect _:
+ case PostgreSQLDialect _:
+ case SQLiteDialect _:
+ System.Type driverType = ReflectHelper.ClassForName(cfg.GetProperty(Cfg.Environment.ConnectionDriver));
+ return !(driverType.IsOdbcDriver() || driverType.IsOleDbDriver());
+ default:
+ return false;
+ }
+ }
+
+ protected override void Configure(Configuration configuration)
+ {
+ base.Configure(configuration);
+
+ System.Type driverType = ReflectHelper.ClassForName(cfg.GetProperty(Cfg.Environment.ConnectionDriver));
+ if (driverType.IsOdbcDriver() || driverType.IsOleDbDriver())
+ {
+ // ODBC and OLE DB drivers are not obsoleted, do not switch it.
+ return;
+ }
+
+ var dialect = NHibernate.Dialect.Dialect.GetDialect(configuration.Properties);
+ System.Type driver;
+ switch (dialect)
+ {
+ case FirebirdDialect _:
+ driver = typeof(FirebirdClientDriver);
+ break;
+ case MsSql2008Dialect _:
+ driver = typeof(Sql2008ClientDriver);
+ break;
+ case MsSql2000Dialect _:
+ driver = typeof(SqlClientDriver);
+ break;
+ case MsSqlCeDialect _:
+ driver = typeof(SqlServerCeDriver);
+ break;
+ case MySQLDialect _:
+ driver = typeof(MySqlDataDriver);
+ break;
+ case PostgreSQLDialect _:
+ driver = typeof(NpgsqlDriver);
+ break;
+ case SQLiteDialect _:
+ driver = typeof(SQLite20Driver);
+ break;
+ default:
+ return;
+ }
+ configuration.SetProperty(Cfg.Environment.ConnectionDriver, driver.FullName);
+ }
+
+ [Test]
+ public void GenerateObsoleteWarning()
+ {
+ using (var spy = new LogSpy(typeof(ConnectionProvider)))
+ {
+ using (BuildSessionFactory())
+ {
+ Assert.That(spy.GetWholeLog(), Does.Contain("Install the NHibernate.Driver."));
+ }
+ }
+ }
+
+ [Test]
+ public void CanUseObsoleteDriver()
+ {
+ using (var s = OpenSession())
+ using (var t = s.BeginTransaction())
+ {
+ var count = s.Query().Count();
+ Assert.That(count, Is.Zero);
+ t.Commit();
+ }
+ }
+ }
+}
diff --git a/src/NHibernate.Test/DriverTest/OdbcDriverFixture.cs b/src/NHibernate.Test/DriverTest/OdbcDriverFixture.cs
index 086df5ca30b..859b1554435 100644
--- a/src/NHibernate.Test/DriverTest/OdbcDriverFixture.cs
+++ b/src/NHibernate.Test/DriverTest/OdbcDriverFixture.cs
@@ -1,7 +1,5 @@
-using System;
using System.Collections;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -21,7 +19,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is OdbcDriver;
+ return factory.ConnectionProvider.Driver.IsOdbcDriver();
}
protected override void OnTearDown()
diff --git a/src/NHibernate.Test/DriverTest/OracleDataClientDriverFixture.cs b/src/NHibernate.Test/DriverTest/OracleDataClientDriverFixture.cs
index 808a1b68dea..868b5d59b93 100644
--- a/src/NHibernate.Test/DriverTest/OracleDataClientDriverFixture.cs
+++ b/src/NHibernate.Test/DriverTest/OracleDataClientDriverFixture.cs
@@ -117,7 +117,12 @@ private static OracleDataClientDriverBase GetDriver(bool managed, IDictionary "NHibernate.Test";
@@ -40,7 +39,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void OnTearDown()
diff --git a/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs b/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs
index 179a50a862d..5d7932a93d5 100644
--- a/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs
+++ b/src/NHibernate.Test/ExceptionsTest/SQLExceptionConversionTest.cs
@@ -3,7 +3,6 @@
using System.Data;
using System.Data.Common;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Exceptions;
using NHibernate.Util;
@@ -32,7 +31,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
var driver = factory.ConnectionProvider.Driver;
- return !(driver is OracleDataClientDriver) && !(driver is OracleManagedDataClientDriver) && !(driver is OracleLiteDataClientDriver) && !(driver is OdbcDriver) && !(driver is OleDbDriver);
+ return !(driver.IsOracleDataClientDriver()) && !(driver.IsOracleManagedDataClientDriver()) && !(driver.IsOracleLiteDataClientDriver()) && !(driver.IsOdbcDriver()) && !(driver.IsOleDbDriver());
}
protected override void Configure(Cfg.Configuration configuration)
diff --git a/src/NHibernate.Test/Futures/FallbackFixture.cs b/src/NHibernate.Test/Futures/FallbackFixture.cs
index 57992b53798..f1255b31005 100644
--- a/src/NHibernate.Test/Futures/FallbackFixture.cs
+++ b/src/NHibernate.Test/Futures/FallbackFixture.cs
@@ -1,3 +1,4 @@
+using System;
using System.Linq;
using NHibernate.Cfg;
using NHibernate.Connection;
@@ -10,13 +11,13 @@
namespace NHibernate.Test.Futures
{
- public class TestDriverThatDoesntSupportQueryBatching : SqlClientDriver
+ public class TestDriverThatDoesntSupportQueryBatching : SqlServer2000Driver
{
public override bool SupportsMultipleQueries => false;
}
///
- /// I'm using a Driver which derives from SqlClientDriver to
+ /// I'm using a Driver which derives from SqlServer2000Driver to
/// return false for the SupportsMultipleQueries property. This is purely to test the way NHibernate
/// will behave when the driver that's being used does not support multiple queries... so even though
/// the test is using MsSql, it's only relevant for databases that don't support multiple queries
@@ -38,7 +39,7 @@ protected override void Configure(Configuration configuration)
base.Configure(configuration);
using (var cp = ConnectionProviderFactory.NewConnectionProvider(cfg.Properties))
{
- if (cp.Driver is SqlClientDriver)
+ if (cp.Driver.IsSqlClientDriver())
{
configuration.Properties[Environment.ConnectionDriver] =
typeof(TestDriverThatDoesntSupportQueryBatching).AssemblyQualifiedName;
diff --git a/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs b/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs
index 75e6a3f8d81..7f1c9eb1a34 100644
--- a/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs
+++ b/src/NHibernate.Test/Hql/Ast/LimitClauseFixture.cs
@@ -1,6 +1,5 @@
using System.Linq;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Hql.Ast.ANTLR;
using NHibernate.Util;
using NUnit.Framework;
@@ -14,7 +13,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
{
return dialect.SupportsVariableLimit
&& !(Dialect is Dialect.MsSql2000Dialect && // don't know why, but these tests don't work on SQL Server using ODBC
- typeof(OdbcDriver).IsAssignableFrom(ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver))));
+ ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsOdbcDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs b/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs
index 0fa36657138..c9647148b74 100644
--- a/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs
+++ b/src/NHibernate.Test/Insertordering/InsertOrderingFixture.cs
@@ -8,7 +8,6 @@
using NHibernate.AdoNet;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.SqlTypes;
@@ -42,7 +41,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// Custom batcher does not support oledb driver.
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void Configure(Configuration configuration)
diff --git a/src/NHibernate.Test/Linq/ByMethod/GroupByTests.cs b/src/NHibernate.Test/Linq/ByMethod/GroupByTests.cs
index 4601013f556..7c82722826a 100644
--- a/src/NHibernate.Test/Linq/ByMethod/GroupByTests.cs
+++ b/src/NHibernate.Test/Linq/ByMethod/GroupByTests.cs
@@ -5,7 +5,6 @@
using System.Text.RegularExpressions;
using NHibernate.Dialect;
using NHibernate.DomainModel.Northwind.Entities;
-using NHibernate.Driver;
using NHibernate.Linq;
using NUnit.Framework;
@@ -551,7 +550,7 @@ public void GroupByComputedValue()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.Orders.GroupBy(o => o.Customer.CustomerId == null ? 0 : 1).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -563,7 +562,7 @@ public void GroupByComputedValueInAnonymousType()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.Orders.GroupBy(o => new { Key = o.Customer.CustomerId == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -575,7 +574,7 @@ public void GroupByComputedValueInObjectArray()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.Orders.GroupBy(o => new[] { o.Customer.CustomerId == null ? 0 : 1, }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -704,7 +703,7 @@ public void GroupByComputedValueWithJoinOnObject()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => o.Order.Customer == null ? 0 : 1).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -716,7 +715,7 @@ public void GroupByComputedValueWithJoinOnId()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => o.Order.Customer.CustomerId == null ? 0 : 1).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -728,7 +727,7 @@ public void GroupByComputedValueInAnonymousTypeWithJoinOnObject()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => new { Key = o.Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -740,7 +739,7 @@ public void GroupByComputedValueInAnonymousTypeWithJoinOnId()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => new { Key = o.Order.Customer.CustomerId == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -752,7 +751,7 @@ public void GroupByComputedValueInObjectArrayWithJoinOnObject()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => new[] { o.Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -764,7 +763,7 @@ public void GroupByComputedValueInObjectArrayWithJoinOnId()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => new[] { o.Order.Customer.CustomerId == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -776,7 +775,7 @@ public void GroupByComputedValueInObjectArrayWithJoinInRightSideOfCase()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.GroupBy(o => new[] { o.Order.Customer.CustomerId == null ? "unknown" : o.Order.Customer.CompanyName }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -788,7 +787,7 @@ public void GroupByComputedValueFromNestedArraySelect()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.Select(o => new object[] { o }).GroupBy(x => new object[] { ((OrderLine)x[0]).Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
@@ -800,7 +799,7 @@ public void GroupByComputedValueFromNestedObjectSelect()
{
if (!TestDialect.SupportsComplexExpressionInGroupBy)
Assert.Ignore(Dialect.GetType().Name + " does not support complex group by expressions");
- if (Sfi.ConnectionProvider.Driver is OdbcDriver)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver())
Assert.Ignore("SQL Server seems unable to match complex group by and select list arguments when running over ODBC.");
var orderGroups = db.OrderLines.Select(o => new { OrderLine = (object)o }).GroupBy(x => new object[] { ((OrderLine)x.OrderLine).Order.Customer == null ? 0 : 1 }).Select(g => new { Key = g.Key, Count = g.Count() }).ToList();
diff --git a/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetFixture.cs b/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetFixture.cs
index b4b80b3a979..1abf13fa653 100644
--- a/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetFixture.cs
@@ -4,7 +4,6 @@
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Xml.Serialization;
-using NHibernate.Driver;
using NHibernate.Type;
using NUnit.Framework;
@@ -21,7 +20,7 @@ protected override IList Mappings
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
// Cannot handle DbType.DateTimeOffset via ODBC.
- if (factory.ConnectionProvider.Driver is OdbcDriver)
+ if (factory.ConnectionProvider.Driver.IsOdbcDriver())
return false;
return base.AppliesTo(factory);
diff --git a/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs b/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs
index 5fb7bca6261..18611b1bd21 100644
--- a/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/Dates/DateTimeOffsetQueryFixture.cs
@@ -2,7 +2,6 @@
using System.Collections;
using System.Data;
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Type;
using NUnit.Framework;
using Environment = NHibernate.Cfg.Environment;
@@ -21,7 +20,7 @@ protected override IList Mappings
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
// Cannot handle DbType.DateTimeOffset via ODBC.
- if (factory.ConnectionProvider.Driver is OdbcDriver)
+ if (factory.ConnectionProvider.Driver.IsOdbcDriver())
return false;
return base.AppliesTo(factory);
diff --git a/src/NHibernate.Test/NHSpecificTest/GH1547/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/GH1547/Fixture.cs
index 5dc6705647b..63b4809752d 100644
--- a/src/NHibernate.Test/NHSpecificTest/GH1547/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/GH1547/Fixture.cs
@@ -153,16 +153,13 @@ public IDisposable SubstituteCommand()
public void CleanUp()
{
- if (_driverImplementation is FirebirdClientDriver fbDriver)
- {
- // Firebird will pool each connection created during the test and will marked as used any table
- // referenced by queries. It will at best delays those tables drop until connections are actually
- // closed, or immediately fail dropping them.
- // This results in other tests failing when they try to create tables with same name.
- // By clearing the connection pool the tables will get dropped. This is done by the following code.
- // Moved from NH1908 test case, contributed by Amro El-Fakharany.
- fbDriver.ClearPool(null);
- }
+ // Firebird will pool each connection created during the test and will marked as used any table
+ // referenced by queries. It will at best delays those tables drop until connections are actually
+ // closed, or immediately fail dropping them.
+ // This results in other tests failing when they try to create tables with same name.
+ // By clearing the connection pool the tables will get dropped. This is done by the following code.
+ // Moved from NH1908 test case, contributed by Amro El-Fakharany.
+ _driverImplementation.ClearPoolForFirebirdClientDriver();
}
#endregion
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1144/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1144/Fixture.cs
index be3b8d7a7b0..221afacfb3c 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1144/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1144/Fixture.cs
@@ -1,7 +1,6 @@
using log4net.Core;
using NHibernate.AdoNet;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Util;
using NUnit.Framework;
@@ -26,7 +25,7 @@ protected override void Configure(Configuration configuration)
[Test]
public void CanSaveInSingleBatch()
{
- if (!typeof(OracleDataClientDriver).IsAssignableFrom(ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver))))
+ if (!ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsOracleDataClientDriver())
{
Assert.Ignore("Only applicable for Oracle Data Client driver");
}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs
index 2c072d90c87..b54bdf9dcac 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1507/Fixture.cs
@@ -1,6 +1,5 @@
using System;
using System.Collections;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH1507
@@ -10,7 +9,7 @@ public class Fixture : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
@@ -117,4 +116,4 @@ public void ImplicitJoinFailingTest()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs b/src/NHibernate.Test/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs
index d485cae2227..c119adeff97 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1553/MsSQL/SnapshotIsolationUpdateConflictTest.cs
@@ -2,7 +2,6 @@
using System.Data;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
using NUnit.Framework.Constraints;
@@ -129,7 +128,7 @@ protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// SQLUpdateConflictToStaleStateExceptionConverter is specific to Sql client driver, and does not work
// with Odbc (and likeley Oledb).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
private bool _isSnapshotIsolationAlreadyAllowed;
diff --git a/src/NHibernate.Test/NHSpecificTest/NH1756/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH1756/Fixture.cs
index 8098a37ca7a..57fcda1d470 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH1756/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH1756/Fixture.cs
@@ -1,6 +1,5 @@
using System.Collections.Generic;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -30,7 +29,7 @@ protected override bool AppliesTo(ISessionFactoryImplementor factory)
// N'@P1 nvarchar(18),@P2 int,@P3 datetime2',N'modified test book',1,'2017-08-02 16:37:16.0630000'
// Setting the scale to 2 still causes failure for two thirds of tries, due to 3ms/7ms being truncated in such case
// with ODBC and SQL Server 2008+ Client, which is rejected by ODBC.
- return !(factory.ConnectionProvider.Driver is OdbcDriver);
+ return !(factory.ConnectionProvider.Driver.IsOdbcDriver());
}
[Test]
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs
index c1f79a62f32..ab96c5ab2bd 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2020/Fixture.cs
@@ -1,6 +1,5 @@
using NUnit.Framework;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Exceptions;
using NHibernate.Test.ExceptionsTest;
using NHibernate.Engine;
@@ -26,7 +25,7 @@ protected override bool AppliesTo(NHibernate.Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// Use a SQL Server Client exception converter, cannot work for ODBC or OleDb
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void OnTearDown()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2207/SampleTest.cs b/src/NHibernate.Test/NHSpecificTest/NH2207/SampleTest.cs
index c84162a1e75..40d332899c7 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2207/SampleTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2207/SampleTest.cs
@@ -1,7 +1,6 @@
using System;
using System.Data;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -17,7 +16,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is Sql2008ClientDriver;
+ return factory.ConnectionProvider.Driver.IsSql2008ClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2296/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2296/Fixture.cs
index 04ccee45786..c56a9ad5ef4 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2296/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2296/Fixture.cs
@@ -1,5 +1,4 @@
using System.Linq;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH2296
@@ -9,7 +8,7 @@ public class Fixture : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
@@ -73,4 +72,4 @@ public void Test()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2302/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2302/Fixture.cs
index fb0b651da7b..9ea7437bb9d 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2302/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2302/Fixture.cs
@@ -1,6 +1,5 @@
using System.Data;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Mapping;
using NUnit.Framework;
@@ -38,7 +37,7 @@ protected override void OnTearDown()
[Test]
public void StringHugeLength()
{
- if (Sfi.ConnectionProvider.Driver is OdbcDriver || Dialect is MsSqlCeDialect)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver() || Dialect is MsSqlCeDialect)
Assert.Ignore("NH-4065, not fixed for Odbc and MsSqlCe");
int id;
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2420/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2420/Fixture.cs
index 1c80edf6de7..38195842ac7 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2420/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2420/Fixture.cs
@@ -4,7 +4,6 @@
using System.Configuration;
using System.Transactions;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -62,7 +61,7 @@ public void ShouldBeAbleToReleaseSuppliedConnectionAfterDistributedTransaction()
new DummyEnlistment(),
EnlistmentOptions.None);
- if (Sfi.ConnectionProvider.Driver.GetType() == typeof(OdbcDriver))
+ if (Sfi.ConnectionProvider.Driver.GetType().IsOdbcDriver())
connection = new OdbcConnection(connectionString);
else
connection = new SqlConnection(connectionString);
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2660And2661/Test.cs b/src/NHibernate.Test/NHSpecificTest/NH2660And2661/Test.cs
index 19e7ae2a6d1..82cb3f662b2 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2660And2661/Test.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2660And2661/Test.cs
@@ -39,7 +39,7 @@ protected override void Configure(Configuration configuration)
{
// to be sure we are using the new drive
base.Configure(configuration);
- configuration.DataBaseIntegration(x=> x.Driver());
+ configuration.DataBaseIntegration(x=> x.Driver());
}
[Test]
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2846/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2846/Fixture.cs
index f20da6a7aa3..370e06fce5b 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2846/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2846/Fixture.cs
@@ -1,5 +1,4 @@
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Linq;
using NUnit.Framework;
@@ -10,7 +9,7 @@ public class Fixture : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH2852/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH2852/Fixture.cs
index 9ab184192f2..0646e67d5e9 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH2852/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH2852/Fixture.cs
@@ -1,5 +1,4 @@
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Linq;
using NUnit.Framework;
@@ -10,7 +9,7 @@ public class Fixture : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
@@ -81,4 +80,4 @@ public void AlsoFails()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3004/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3004/Fixture.cs
index 706eb379177..8ea465009c0 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3004/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3004/Fixture.cs
@@ -13,7 +13,7 @@ public void RemoveUnusedCommandParametersBug_1()
/* UseNamedPrefixInSql is true
* UseNamedPrefixInParameter is false
* */
- var driver = new TestSqlClientDriver(true, false);
+ var driver = new TestSqlServerDriver(true, false);
RunTest(driver);
}
@@ -24,12 +24,12 @@ public void RemoveUnusedCommandParametersBug_2()
/* UseNamedPrefixInSql is true
* UseNamedPrefixInParameter is true
* */
- var driver = new TestSqlClientDriver(true, true);
+ var driver = new TestSqlServerDriver(true, true);
RunTest(driver);
}
- private static void RunTest(TestSqlClientDriver driver)
+ private static void RunTest(TestSqlServerDriver driver)
{
var command = driver.CreateCommand();
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3004/FixtureObsolete.cs b/src/NHibernate.Test/NHSpecificTest/NH3004/FixtureObsolete.cs
new file mode 100644
index 00000000000..cb357f3d473
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/NH3004/FixtureObsolete.cs
@@ -0,0 +1,59 @@
+using System;
+using System.Collections;
+using NHibernate.SqlCommand;
+using NUnit.Framework;
+
+namespace NHibernate.Test.NHSpecificTest.NH3004
+{
+ [TestFixture]
+ [Obsolete("Uses old driver")]
+ public class FixtureObsolete
+ {
+ [Test]
+ public void RemoveUnusedCommandParametersBug_1()
+ {
+ /* UseNamedPrefixInSql is true
+ * UseNamedPrefixInParameter is false
+ * */
+ var driver = new TestSqlClientDriver(true, false);
+
+ RunTest(driver);
+ }
+
+ [Test]
+ public void RemoveUnusedCommandParametersBug_2()
+ {
+ /* UseNamedPrefixInSql is true
+ * UseNamedPrefixInParameter is true
+ * */
+ var driver = new TestSqlClientDriver(true, true);
+
+ RunTest(driver);
+ }
+
+ private static void RunTest(TestSqlClientDriver driver)
+ {
+ var command = driver.CreateCommand();
+
+ var usedParam = command.CreateParameter();
+ usedParam.ParameterName = driver.FormatNameForParameter("p0");
+ command.Parameters.Add(usedParam);
+
+ var unusedParam = command.CreateParameter();
+ unusedParam.ParameterName = driver.FormatNameForParameter("unused");
+ command.Parameters.Add(unusedParam);
+
+ Assert.AreEqual(command.Parameters.Count, 2);
+
+ SqlString sqlString = new SqlStringBuilder()
+ .AddParameter()
+ .ToSqlString();
+
+ driver.RemoveUnusedCommandParameters(command, sqlString);
+
+ Assert.AreEqual(command.Parameters.Count, 1);
+
+ Assert.AreEqual(command.Parameters[0], usedParam);
+ }
+ }
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlClientDriver.cs b/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlClientDriver.cs
index 24297856ff0..52a8b962569 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlClientDriver.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlClientDriver.cs
@@ -1,3 +1,4 @@
+using System;
using System.Data.SqlClient;
using NHibernate.AdoNet;
using NHibernate.Dialect;
@@ -11,6 +12,7 @@ namespace NHibernate.Test.NHSpecificTest.NH3004
///
/// A NHibernate Driver for using the SqlClient DataProvider
///
+ [Obsolete("Uses old driver")]
public class TestSqlClientDriver : SqlClientDriver
{
bool _UseNamedPrefixInSql = true;
@@ -38,4 +40,4 @@ public override bool UseNamedPrefixInParameter
get { return _UseNamedPrefixInParameter; }
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlServerDriver.cs b/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlServerDriver.cs
new file mode 100644
index 00000000000..961e1a30a79
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/NH3004/TestSqlServerDriver.cs
@@ -0,0 +1,35 @@
+using NHibernate.Driver;
+
+namespace NHibernate.Test.NHSpecificTest.NH3004
+{
+ ///
+ /// A NHibernate Driver for using the SqlClient DataProvider
+ ///
+ public class TestSqlServerDriver : SqlServer2000Driver
+ {
+ bool _UseNamedPrefixInSql = true;
+ bool _UseNamedPrefixInParameter = false;
+
+ public TestSqlServerDriver()
+ {
+
+ }
+
+ public TestSqlServerDriver(bool UseNamedPrefixInSql, bool UseNamedPrefixInParameter)
+ {
+ _UseNamedPrefixInSql = UseNamedPrefixInSql;
+ _UseNamedPrefixInParameter = UseNamedPrefixInParameter;
+ }
+
+ public override bool UseNamedPrefixInSql
+ {
+ get { return _UseNamedPrefixInSql; }
+
+ }
+
+ public override bool UseNamedPrefixInParameter
+ {
+ get { return _UseNamedPrefixInParameter; }
+ }
+ }
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs b/src/NHibernate.Test/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs
index f460546d6ad..e2fa79bec3a 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3023/DeadlockConnectionPoolIssueTest.cs
@@ -10,7 +10,6 @@
using log4net.Repository.Hierarchy;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -32,7 +31,7 @@ protected override void Configure(Configuration configuration)
// Uses directly SqlConnection.
protected override bool AppliesTo(ISessionFactoryImplementor factory) =>
- factory.ConnectionProvider.Driver is SqlClientDriver &&
+ factory.ConnectionProvider.Driver.IsSqlClientDriver() &&
factory.ConnectionProvider.Driver.SupportsSystemTransactions;
protected override bool AppliesTo(Dialect.Dialect dialect) =>
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3121/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3121/Fixture.cs
index 353d93e06fb..ccf19f218e0 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3121/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3121/Fixture.cs
@@ -3,7 +3,6 @@
using System.Linq;
using System.Reflection;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH3121
@@ -24,10 +23,10 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
[Test]
public void ShouldThrowWhenByteArrayTooLong()
{
- // For SQL Server only the SqlClientDriver sets parameter lengths
+ // For SQL Server only the SqlServer2000Driver sets parameter lengths
// even when there is no length specified in the mapping. The ODBC
// driver won't cause the truncation issue and hence not the exception.
- if (!(Sfi.ConnectionProvider.Driver is SqlClientDriver))
+ if (!(Sfi.ConnectionProvider.Driver.IsSqlClientDriver()))
Assert.Ignore("Test limited to drivers that sets parameter length even with no length specified in the mapping.");
const int reportSize = 17158;
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3142/ChildrenTest.cs b/src/NHibernate.Test/NHSpecificTest/NH3142/ChildrenTest.cs
index cc1b1d1d6d7..b3ed2a39e57 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3142/ChildrenTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3142/ChildrenTest.cs
@@ -1,7 +1,6 @@
using System;
using System.Collections;
using System.Collections.Generic;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH3142
@@ -11,7 +10,7 @@ public class ChildrenTest : BugTestCase
{
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
- return !(factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return !(factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3202/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3202/Fixture.cs
index 8734c483c18..45b3ddd62ff 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3202/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3202/Fixture.cs
@@ -16,7 +16,7 @@ protected override void Configure(Configuration configuration)
if (!(Dialect is MsSql2008Dialect))
Assert.Ignore("Test is for MS SQL Server dialect only (custom dialect).");
- if (!typeof(SqlClientDriver).IsAssignableFrom(ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver))))
+ if (!ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsSqlClientDriver())
Assert.Ignore("Test is for MS SQL Server driver only (custom driver is used).");
cfg.SetProperty(Environment.Dialect, typeof(OffsetStartsAtOneTestDialect).AssemblyQualifiedName);
@@ -98,14 +98,8 @@ public void OffsetStartingAtOneSetsParameterToSkipValuePlusOne()
}
}
- public class OffsetStartsAtOneTestDialect : MsSql2008Dialect
- {
- public bool ForceOffsetStartsAtOne { get; set; }
- public override bool OffsetStartsAtOne { get { return ForceOffsetStartsAtOne; } }
- }
-
- public class OffsetTestDriver : SqlClientDriver
+ public class OffsetTestDriver : SqlServer2000Driver
{
public OffsetStartsAtOneTestDialect OffsetStartsAtOneTestDialect;
private int _offsetParameterIndex = 1;
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3202/FixtureObsolete.cs b/src/NHibernate.Test/NHSpecificTest/NH3202/FixtureObsolete.cs
new file mode 100644
index 00000000000..0a5cefbe271
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/NH3202/FixtureObsolete.cs
@@ -0,0 +1,125 @@
+using System;
+using System.Data.Common;
+using System.Text.RegularExpressions;
+using NHibernate.Cfg;
+using NHibernate.Dialect;
+using NHibernate.Driver;
+using NHibernate.Util;
+using NUnit.Framework;
+using Environment = NHibernate.Cfg.Environment;
+
+namespace NHibernate.Test.NHSpecificTest.NH3202
+{
+ [TestFixture]
+ [Obsolete("Uses old driver")]
+ public class FixtureObsolete : BugTestCase
+ {
+ protected override void Configure(Configuration configuration)
+ {
+ if (!(Dialect is MsSql2008Dialect))
+ Assert.Ignore("Test is for MS SQL Server dialect only (custom dialect).");
+
+ if (!ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver)).IsSqlClientDriver())
+ Assert.Ignore("Test is for MS SQL Server driver only (custom driver is used).");
+
+ cfg.SetProperty(Environment.Dialect, typeof(OffsetStartsAtOneTestDialect).AssemblyQualifiedName);
+ cfg.SetProperty(Environment.ConnectionDriver, typeof(OffsetTestObsoleteDriver).AssemblyQualifiedName);
+ }
+
+ private OffsetStartsAtOneTestDialect OffsetStartsAtOneTestDialect
+ {
+ get { return (OffsetStartsAtOneTestDialect)Sfi.Dialect; }
+ }
+
+ private OffsetTestObsoleteDriver CustomDriver
+ {
+ get { return (OffsetTestObsoleteDriver)Sfi.ConnectionProvider.Driver; }
+ }
+
+ protected override void OnSetUp()
+ {
+ CustomDriver.OffsetStartsAtOneTestDialect = OffsetStartsAtOneTestDialect;
+
+ base.OnSetUp();
+
+ using (var session = OpenSession())
+ using (var transaction = session.BeginTransaction())
+ {
+ session.Save(new SequencedItem(1));
+ session.Save(new SequencedItem(2));
+ session.Save(new SequencedItem(3));
+
+ session.Flush();
+ transaction.Commit();
+ }
+ }
+
+ protected override void OnTearDown()
+ {
+ using (ISession s = OpenSession())
+ using (ITransaction t = s.BeginTransaction())
+ {
+ s.Delete("from SequencedItem");
+ t.Commit();
+ }
+ base.OnTearDown();
+ }
+
+
+ [Test]
+ public void OffsetNotStartingAtOneSetsParameterToSkipValue()
+ {
+ OffsetStartsAtOneTestDialect.ForceOffsetStartsAtOne = false;
+
+ using (var session = OpenSession())
+ {
+ var item2 =
+ session.QueryOver()
+ .OrderBy(i => i.I).Asc
+ .Take(1).Skip(2)
+ .SingleOrDefault();
+
+ Assert.That(CustomDriver.OffsetParameterValueFromCommand, Is.EqualTo(2));
+ }
+ }
+
+ [Test]
+ public void OffsetStartingAtOneSetsParameterToSkipValuePlusOne()
+ {
+ OffsetStartsAtOneTestDialect.ForceOffsetStartsAtOne = true;
+
+ using (var session = OpenSession())
+ {
+ var item2 =
+ session.QueryOver()
+ .OrderBy(i => i.I).Asc
+ .Take(1).Skip(2)
+ .SingleOrDefault();
+
+ Assert.That(CustomDriver.OffsetParameterValueFromCommand, Is.EqualTo(3));
+ }
+ }
+ }
+
+
+ [Obsolete("Uses old driver")]
+ public class OffsetTestObsoleteDriver : SqlClientDriver
+ {
+ public OffsetStartsAtOneTestDialect OffsetStartsAtOneTestDialect;
+ private int _offsetParameterIndex = 1;
+
+ public int? OffsetParameterValueFromCommand { get; private set; }
+
+ protected override void OnBeforePrepare(DbCommand command)
+ {
+ base.OnBeforePrepare(command);
+ OffsetParameterValueFromCommand = null;
+
+ bool hasLimit = new Regex(@"select\s+top").IsMatch(command.CommandText.ToLower());
+ if (!hasLimit)
+ return;
+
+ OffsetParameterValueFromCommand = (int)command.Parameters[_offsetParameterIndex].Value;
+ }
+ }
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3202/OffsetStartsAtOneTestDialect.cs b/src/NHibernate.Test/NHSpecificTest/NH3202/OffsetStartsAtOneTestDialect.cs
new file mode 100644
index 00000000000..adc4a57a6a0
--- /dev/null
+++ b/src/NHibernate.Test/NHSpecificTest/NH3202/OffsetStartsAtOneTestDialect.cs
@@ -0,0 +1,10 @@
+using NHibernate.Dialect;
+
+namespace NHibernate.Test.NHSpecificTest.NH3202
+{
+ public class OffsetStartsAtOneTestDialect : MsSql2008Dialect
+ {
+ public bool ForceOffsetStartsAtOne { get; set; }
+ public override bool OffsetStartsAtOne { get { return ForceOffsetStartsAtOne; } }
+ }
+}
\ No newline at end of file
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3252/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3252/Fixture.cs
index 2638158af72..1483a4db734 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3252/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3252/Fixture.cs
@@ -1,6 +1,5 @@
using System;
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NUnit.Framework;
@@ -12,7 +11,7 @@ public class Fixture : BugTestCase
{
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3405/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3405/Fixture.cs
index d687fc1dcb5..9ae781a5fc0 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3405/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3405/Fixture.cs
@@ -4,7 +4,6 @@
using NHibernate.Cfg;
using NHibernate.Cfg.MappingSchema;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NHibernate.Mapping.ByCode;
@@ -34,7 +33,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// No Xml support with Odbc (and likely OleDb too).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override HbmMapping GetMappings()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3518/XmlColumnTest.cs b/src/NHibernate.Test/NHSpecificTest/NH3518/XmlColumnTest.cs
index 832f8f30cb4..114bc3debee 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3518/XmlColumnTest.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3518/XmlColumnTest.cs
@@ -1,7 +1,6 @@
using System.Xml;
using NHibernate.Cfg;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -27,7 +26,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override void Configure(Configuration configuration)
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3620/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3620/Fixture.cs
index 232c5016cc9..f9b53041236 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3620/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3620/Fixture.cs
@@ -1,12 +1,11 @@
using System;
-using NHibernate.Driver;
using NUnit.Framework;
namespace NHibernate.Test.NHSpecificTest.NH3620 {
[TestFixture]
public class Fixture : BugTestCase {
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) {
- return (factory.ConnectionProvider.Driver is OracleManagedDataClientDriver);
+ return (factory.ConnectionProvider.Driver.IsOracleManagedDataClientDriver());
}
protected override void OnTearDown() {
@@ -40,4 +39,4 @@ private void CleanupData() {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3844/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3844/Fixture.cs
index d8cca9fe754..e4a64852bd9 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3844/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3844/Fixture.cs
@@ -1,5 +1,4 @@
using System.Linq;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NUnit.Framework;
@@ -17,7 +16,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// SQL Server seems unable to match complex group by and select list arguments when running over ODBC.";
- return !(factory.ConnectionProvider.Driver is OdbcDriver);
+ return !(factory.ConnectionProvider.Driver.IsOdbcDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3850/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3850/Fixture.cs
index cb3f7d48245..5bae8e45eba 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3850/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3850/Fixture.cs
@@ -5,7 +5,6 @@
using System.Linq;
using System.Reflection;
using System.Text;
-using NHibernate.Driver;
using NHibernate.Linq;
using NHibernate.SqlTypes;
using NHibernate.Util;
@@ -30,7 +29,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory)
{
// Cannot handle DbType.DateTimeOffset via ODBC.
- return !(factory.ConnectionProvider.Driver is OdbcDriver);
+ return !(factory.ConnectionProvider.Driver.IsOdbcDriver());
}
protected override void OnSetUp()
diff --git a/src/NHibernate.Test/NHSpecificTest/NH3912/ReusableBatcherFixture.cs b/src/NHibernate.Test/NHSpecificTest/NH3912/ReusableBatcherFixture.cs
index 396fd38a48a..d803ea9de98 100644
--- a/src/NHibernate.Test/NHSpecificTest/NH3912/ReusableBatcherFixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/NH3912/ReusableBatcherFixture.cs
@@ -3,7 +3,6 @@
using NHibernate.AdoNet;
using NHibernate.Cfg;
using NHibernate.Cfg.MappingSchema;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Linq;
using NHibernate.Mapping.ByCode;
@@ -17,9 +16,9 @@ public class ReusableBatcherFixture : TestCaseMappingByCode
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
var driver = factory.ConnectionProvider.Driver;
- return driver is OracleDataClientDriver ||
- driver is OracleLiteDataClientDriver ||
- driver is OracleManagedDataClientDriver;
+ return driver.IsOracleDataClientDriver() ||
+ driver.IsOracleLiteDataClientDriver() ||
+ driver.IsOracleManagedDataClientDriver();
}
protected override HbmMapping GetMappings()
diff --git a/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs b/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs
index 5d822391ca9..312495477ff 100644
--- a/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs
+++ b/src/NHibernate.Test/NHSpecificTest/SqlConverterAndMultiQuery/Fixture.cs
@@ -1,5 +1,4 @@
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -21,7 +20,7 @@ protected override bool AppliesTo(ISessionFactoryImplementor factory)
// 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;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/NHibernate.Test.csproj b/src/NHibernate.Test/NHibernate.Test.csproj
index f6b65d9db1d..5d2c79cfd8e 100644
--- a/src/NHibernate.Test/NHibernate.Test.csproj
+++ b/src/NHibernate.Test/NHibernate.Test.csproj
@@ -53,8 +53,6 @@
-
-
@@ -62,37 +60,26 @@
-
-
-
-
-
-
-
-
-
-
- %(RecursiveDir)%(Filename)%(Extension)
- PreserveNewest
-
-
-
-
-
- %(RecursiveDir)%(Filename)%(Extension)
- PreserveNewest
-
+
+
+
+
+
+
+
+
+
diff --git a/src/NHibernate.Test/Pagination/CustomDialectFixture.cs b/src/NHibernate.Test/Pagination/CustomDialectFixture.cs
index 3ff7517e819..05cc45e0bdc 100644
--- a/src/NHibernate.Test/Pagination/CustomDialectFixture.cs
+++ b/src/NHibernate.Test/Pagination/CustomDialectFixture.cs
@@ -3,7 +3,6 @@
using NHibernate.Cfg;
using NHibernate.Criterion;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Util;
using NUnit.Framework;
using Environment = NHibernate.Cfg.Environment;
@@ -29,7 +28,7 @@ protected override void Configure(Configuration configuration)
if (!(Dialect is MsSql2005Dialect))
Assert.Ignore("Test is for SQL dialect only");
var driverClass = ReflectHelper.ClassForName(cfg.GetProperty(Environment.ConnectionDriver));
- if (!typeof(SqlClientDriver).IsAssignableFrom(driverClass))
+ if (!driverClass.IsSqlClientDriver())
Assert.Ignore("Test is compatible only with Sql Server Client driver connection strings");
cfg.SetProperty(Environment.Dialect, typeof(CustomMsSqlDialect).AssemblyQualifiedName);
@@ -123,4 +122,4 @@ public void LimitFirstMultiCriteria()
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/Pagination/CustomMsSqlDriver.cs b/src/NHibernate.Test/Pagination/CustomMsSqlDriver.cs
index 3ba118a3d7f..5c1319be06f 100644
--- a/src/NHibernate.Test/Pagination/CustomMsSqlDriver.cs
+++ b/src/NHibernate.Test/Pagination/CustomMsSqlDriver.cs
@@ -1,7 +1,5 @@
using System.Data.Common;
-using System.Text.RegularExpressions;
using NHibernate.Driver;
-using NUnit.Framework;
namespace NHibernate.Test.Pagination
{
@@ -9,7 +7,7 @@ namespace NHibernate.Test.Pagination
/// Class to work with CustomMsSqlDialect to allow
/// verification of simulated limit parameters
///
- public class CustomMsSqlDriver : SqlClientDriver
+ public class CustomMsSqlDriver : SqlServer2000Driver
{
public CustomMsSqlDialect CustomMsSqlDialect;
@@ -33,4 +31,4 @@ protected override void OnBeforePrepare(DbCommand command)
base.OnBeforePrepare(command);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs b/src/NHibernate.Test/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs
index d30f493cfe8..1db753cc697 100644
--- a/src/NHibernate.Test/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs
+++ b/src/NHibernate.Test/SqlTest/Custom/Oracle/OracleCustomSQLFixture.cs
@@ -14,7 +14,7 @@ protected override IList Mappings
protected override bool AppliesTo(NHibernate.Engine.ISessionFactoryImplementor factory)
{
- return factory.ConnectionProvider.Driver is Driver.OracleDataClientDriver;
+ return factory.ConnectionProvider.Driver.IsOracleDataClientDriver();
}
protected override bool AppliesTo(Dialect.Dialect dialect)
@@ -57,4 +57,4 @@ public void RefCursorOutStoredProcedure()
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs b/src/NHibernate.Test/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs
index ab0abc53a0c..031f69dd0f2 100644
--- a/src/NHibernate.Test/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs
+++ b/src/NHibernate.Test/SqlTest/Identity/MsSQL/MSSQLIdentityInsertWithStoredProcsTest.cs
@@ -1,6 +1,5 @@
using System.Collections;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NUnit.Framework;
@@ -17,7 +16,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// Tested resulting SQL depends on driver.
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
protected override string GetExpectedInsertOrgLogStatement(string orgName)
diff --git a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs
index 12c4cc12d1d..95a30c0a6cf 100644
--- a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs
+++ b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixture.cs
@@ -4,9 +4,7 @@
using System.Threading;
using System.Transactions;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Engine;
-using NHibernate.Linq;
using NHibernate.Test.TransactionTest;
using NUnit.Framework;
@@ -179,7 +177,7 @@ public void CanUseSessionWithManyScopes(bool explicitFlush)
// ODBC with SQL-Server always causes scopes to go distributed, which causes their transaction completion to run
// asynchronously. But ODBC enlistment also check the previous transaction in a way that do not guard against it
// being concurrently disposed of. See https://github.com/nhibernate/nhibernate-core/pull/1505 for more details.
- Assume.That(!(Sfi.ConnectionProvider.Driver is OdbcDriver),
+ Assume.That(!(Sfi.ConnectionProvider.Driver.IsOdbcDriver()),
"ODBC sometimes fails on second scope by checking the previous transaction status, which may yield an object disposed exception");
using (var s = WithOptions().ConnectionReleaseMode(ConnectionReleaseMode.OnClose).OpenSession())
diff --git a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs
index 6a13a609c2a..eb31c95f8c3 100644
--- a/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs
+++ b/src/NHibernate.Test/SystemTransactions/SystemTransactionFixtureBase.cs
@@ -1,7 +1,6 @@
using System;
using System.Text.RegularExpressions;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Test.TransactionTest;
using NHibernate.Util;
@@ -32,7 +31,7 @@ protected void DisableConnectionAutoEnlist(Configuration configuration)
var autoEnlistmentKeyword = "Enlist";
var autoEnlistmentKeywordPattern = autoEnlistmentKeyword;
if (configuration.GetDerivedProperties().TryGetValue(Cfg.Environment.ConnectionDriver, out var driver) &&
- typeof(MySqlDataDriver).IsAssignableFrom(ReflectHelper.ClassForName(driver)))
+ ReflectHelper.ClassForName(driver).IsMySqlDataDriver())
{
autoEnlistmentKeyword = "AutoEnlist";
autoEnlistmentKeywordPattern = "Auto ?Enlist";
@@ -143,4 +142,4 @@ public override void AfterTransactionCompletion(ITransaction tx)
}
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/TestCase.cs b/src/NHibernate.Test/TestCase.cs
index 13f82daf61e..6cdc58ae4f4 100644
--- a/src/NHibernate.Test/TestCase.cs
+++ b/src/NHibernate.Test/TestCase.cs
@@ -15,7 +15,6 @@
using NUnit.Framework.Interfaces;
using System.Text;
using NHibernate.Dialect;
-using NHibernate.Driver;
namespace NHibernate.Test
{
@@ -296,16 +295,13 @@ protected virtual void DropSchema()
public static void DropSchema(bool useStdOut, SchemaExport export, ISessionFactoryImplementor sfi)
{
- if (sfi?.ConnectionProvider.Driver is FirebirdClientDriver fbDriver)
- {
- // Firebird will pool each connection created during the test and will marked as used any table
- // referenced by queries. It will at best delays those tables drop until connections are actually
- // closed, or immediately fail dropping them.
- // This results in other tests failing when they try to create tables with same name.
- // By clearing the connection pool the tables will get dropped. This is done by the following code.
- // Moved from NH1908 test case, contributed by Amro El-Fakharany.
- fbDriver.ClearPool(null);
- }
+ // Firebird will pool each connection created during the test and will marked as used any table
+ // referenced by queries. It will at best delays those tables drop until connections are actually
+ // closed, or immediately fail dropping them.
+ // This results in other tests failing when they try to create tables with same name.
+ // By clearing the connection pool the tables will get dropped. This is done by the following code.
+ // Moved from NH1908 test case, contributed by Amro El-Fakharany.
+ sfi?.ConnectionProvider.Driver.ClearPoolForFirebirdClientDriver();
export.Drop(useStdOut, true);
}
diff --git a/src/NHibernate.Test/TestEmbeddedConfig.cfg.xml b/src/NHibernate.Test/TestEmbeddedConfig.cfg.xml
index 25058dae03a..6ba543f0cb3 100644
--- a/src/NHibernate.Test/TestEmbeddedConfig.cfg.xml
+++ b/src/NHibernate.Test/TestEmbeddedConfig.cfg.xml
@@ -3,10 +3,10 @@
NHibernate.Test.DebugConnectionProvider, NHibernate.Test
NHibernate.Cache.HashtableCacheProvider, NHibernate
- NHibernate.Driver.SqlClientDriver
+ NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer
Server=localhost;initial catalog=nhibernate;User Id=;Password=
true 1, false 0, yes 1, no 0
NHibernate.Dialect.MsSql2000Dialect
NHibernate.Test.CfgTest.ConfigurationFixture+SampleQueryProvider, NHibernate.Test
-
\ No newline at end of file
+
diff --git a/src/NHibernate.Test/TestingExtensions.cs b/src/NHibernate.Test/TestingExtensions.cs
new file mode 100644
index 00000000000..ed93240560b
--- /dev/null
+++ b/src/NHibernate.Test/TestingExtensions.cs
@@ -0,0 +1,136 @@
+using NHibernate.Driver;
+
+namespace NHibernate.Test
+{
+ public static class TestingExtensions
+ {
+ public static bool IsOdbcDriver(this IDriver driver)
+ {
+ if (driver is OdbcDriver) return true;
+ return false;
+ }
+
+ public static bool IsOdbcDriver(this System.Type driverClass)
+ {
+ if (typeof(OdbcDriver).IsAssignableFrom(driverClass)) return true;
+ return false;
+ }
+
+ public static bool IsOleDbDriver(this IDriver driver)
+ {
+ if (driver is OleDbDriver) return true;
+ return false;
+ }
+
+ public static bool IsOleDbDriver(this System.Type driverClass)
+ {
+ if (typeof(OleDbDriver).IsAssignableFrom(driverClass)) return true;
+ return false;
+ }
+
+ ///
+ /// Matches both SQL Server 2000 and 2008 drivers
+ ///
+ public static bool IsSqlClientDriver(this IDriver driver)
+ {
+#pragma warning disable 618
+ if (driver is SqlClientDriver) return true;
+#pragma warning restore 618
+ if (driver is SqlServer2000Driver) return true;
+ return false;
+ }
+
+ ///
+ /// Matches both SQL Server 2000 and 2008 drivers
+ ///
+ public static bool IsSqlClientDriver(this System.Type driverClass)
+ {
+#pragma warning disable 618
+ if (typeof(SqlClientDriver).IsAssignableFrom(driverClass)) return true;
+#pragma warning restore 618
+ if (typeof(SqlServer2000Driver).IsAssignableFrom(driverClass)) return true;
+ return false;
+ }
+
+ public static bool IsSql2008ClientDriver(this IDriver driver)
+ {
+#pragma warning disable 618
+ if (driver is Sql2008ClientDriver) return true;
+#pragma warning restore 618
+ if (driver is SqlServer2008Driver) return true;
+ return false;
+ }
+
+ public static bool IsMySqlDataDriver(this System.Type driverClass)
+ {
+#pragma warning disable 618
+ if (typeof(MySqlDataDriver).IsAssignableFrom(driverClass)) return true;
+#pragma warning restore 618
+ if (typeof(MySqlDriver).IsAssignableFrom(driverClass)) return true;
+ return false;
+ }
+
+
+ public static bool IsFirebirdClientDriver(this IDriver driver)
+ {
+#pragma warning disable 618
+ if (driver is FirebirdClientDriver) return true;
+#pragma warning restore 618
+ if (driver is FirebirdDriver) return true;
+ return false;
+ }
+
+ ///
+ /// If driver is Firebird, clear the pool.
+ /// Firebird will pool each connection created during the test and will marked as used any table
+ /// referenced by queries. It will at best delays those tables drop until connections are actually
+ /// closed, or immediately fail dropping them.
+ /// This results in other tests failing when they try to create tables with same name.
+ /// By clearing the connection pool the tables will get dropped. This is done by the following code.
+ /// Moved from NH1908 test case, contributed by Amro El-Fakharany.
+ ///
+ public static void ClearPoolForFirebirdClientDriver(this IDriver driver)
+ {
+ switch (driver)
+ {
+#pragma warning disable 618
+ case FirebirdClientDriver fbDriver:
+ fbDriver.ClearPool(null);
+ break;
+#pragma warning restore 618
+ case FirebirdDriver fbDriver2:
+ fbDriver2.ClearPool(null);
+ break;
+ }
+ }
+
+ public static bool IsOracleDataClientDriver(this IDriver driver)
+ {
+ if (driver is OracleDataClientDriver) return true;
+ return false;
+ }
+
+ public static bool IsOracleDataClientDriver(this System.Type driverClass)
+ {
+ if (typeof(OracleDataClientDriver).IsAssignableFrom(driverClass)) return true;
+ return false;
+ }
+
+ public static bool IsOracleLiteDataClientDriver(this IDriver driver)
+ {
+ if (driver is OracleLiteDataClientDriver) return true;
+ return false;
+ }
+
+ public static bool IsOracleManagedDataClientDriver(this IDriver driver)
+ {
+#pragma warning disable 618
+ if (driver is OracleManagedDataClientDriver) return true;
+#pragma warning restore 618
+#if NETFX
+ if (driver is OracleManagedDriver) return true;
+#endif
+ return false;
+ }
+ }
+}
diff --git a/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs b/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs
index 62141b92a21..34884cc9762 100644
--- a/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs
+++ b/src/NHibernate.Test/Tools/hbm2ddl/SchemaMetadataUpdaterTest/SchemaMetadataUpdaterFixture.cs
@@ -2,7 +2,6 @@
using System.Collections.Generic;
using System.Linq;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Mapping;
using NHibernate.Tool.hbm2ddl;
@@ -104,7 +103,7 @@ public void EnsureReservedWordsHardCodedInDialect()
}
}
- if (sf.ConnectionProvider.Driver is OdbcDriver)
+ if (sf.ConnectionProvider.Driver.IsOdbcDriver())
{
Assert.Inconclusive("ODBC has excess keywords reserved");
}
@@ -257,7 +256,7 @@ public void WhenConfiguredOnlyExplicitAutoQuote()
var configuration = TestConfigurationHelper.GetDefaultConfiguration();
var driverClass = ReflectHelper.ClassForName(configuration.GetProperty(Environment.ConnectionDriver));
// Test uses the default dialect driver, which will not accept Odbc or OleDb connection strings.
- if (typeof(OdbcDriver).IsAssignableFrom(driverClass) || typeof(OleDbDriver).IsAssignableFrom(driverClass))
+ if (driverClass.IsOdbcDriver() || driverClass.IsOleDbDriver())
Assert.Ignore("Test is not compatible with OleDb or ODBC driver connection strings");
var configuredDialect = Dialect.Dialect.GetDialect();
if(!configuredDialect.DefaultProperties.ContainsKey(Environment.ConnectionDriver))
diff --git a/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs b/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs
index 7ccd282a9cb..9e20b80389b 100644
--- a/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs
+++ b/src/NHibernate.Test/Tools/hbm2ddl/SchemaUpdate/MigrationFixture.cs
@@ -2,7 +2,6 @@
using System.IO;
using System.Reflection;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Util;
using NUnit.Framework;
@@ -19,7 +18,7 @@ private void MigrateSchema(string resource1, string resource2)
var driverClass = ReflectHelper.ClassForName(v1cfg.GetProperty(Environment.ConnectionDriver));
// Odbc is not supported by schema update: System.Data.Odbc.OdbcConnection.GetSchema("ForeignKeys") fails with an ArgumentException: ForeignKeys is undefined.
// It seems it would require its own DataBaseSchema, but this is bound to the dialect, not the driver.
- if (typeof(OdbcDriver).IsAssignableFrom(driverClass))
+ if (driverClass.IsOdbcDriver())
Assert.Ignore("Test is not compatible with ODBC");
using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(resource1))
@@ -65,4 +64,4 @@ public void SimpleColumnReplace()
MigrateSchema(resource1, resource2);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs b/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs
index ff54e4fab02..9c82e76f58e 100644
--- a/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/AbstractDateTimeTypeFixture.cs
@@ -584,16 +584,13 @@ DbParameter IDriver.GenerateParameter(DbCommand command, string name, SqlType sq
public void CleanUp()
{
- if (_driverImplementation is FirebirdClientDriver fbDriver)
- {
- // Firebird will pool each connection created during the test and will marked as used any table
- // referenced by queries. It will at best delays those tables drop until connections are actually
- // closed, or immediately fail dropping them.
- // This results in other tests failing when they try to create tables with same name.
- // By clearing the connection pool the tables will get dropped. This is done by the following code.
- // Moved from NH1908 test case, contributed by Amro El-Fakharany.
- fbDriver.ClearPool(null);
- }
+ // Firebird will pool each connection created during the test and will marked as used any table
+ // referenced by queries. It will at best delays those tables drop until connections are actually
+ // closed, or immediately fail dropping them.
+ // This results in other tests failing when they try to create tables with same name.
+ // By clearing the connection pool the tables will get dropped. This is done by the following code.
+ // Moved from NH1908 test case, contributed by Amro El-Fakharany.
+ _driverImplementation.ClearPoolForFirebirdClientDriver();
}
#endregion
diff --git a/src/NHibernate.Test/TypesTest/DateTime2TypeFixture.cs b/src/NHibernate.Test/TypesTest/DateTime2TypeFixture.cs
index 5eec555af67..dd703c724a4 100644
--- a/src/NHibernate.Test/TypesTest/DateTime2TypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/DateTime2TypeFixture.cs
@@ -1,5 +1,4 @@
using System;
-using NHibernate.Driver;
using NHibernate.SqlTypes;
using NHibernate.Type;
using NUnit.Framework;
@@ -18,7 +17,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) =>
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) =>
// Cannot handle DbType.DateTime2 via .Net ODBC.
- !(factory.ConnectionProvider.Driver is OdbcDriver);
+ !(factory.ConnectionProvider.Driver.IsOdbcDriver());
protected override string TypeName => "DateTime2";
protected override AbstractDateTimeType Type => NHibernateUtil.DateTime2;
@@ -45,7 +44,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) =>
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) =>
// Cannot handle DbType.DateTime2 via .Net ODBC.
- !(factory.ConnectionProvider.Driver is OdbcDriver);
+ !(factory.ConnectionProvider.Driver.IsOdbcDriver());
protected override string TypeName => "DateTime2WithScale";
protected override AbstractDateTimeType Type => (AbstractDateTimeType)TypeFactory.GetDateTime2Type(3);
diff --git a/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs b/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs
index 0881a08e878..664e1635da4 100644
--- a/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/DateTimeOffsetTypeFixture.cs
@@ -2,7 +2,6 @@
using System.Data;
using System.Linq;
using NHibernate.Cfg;
-using NHibernate.Driver;
using NHibernate.SqlTypes;
using NHibernate.Tool.hbm2ddl;
using NHibernate.Type;
@@ -26,7 +25,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect) =>
protected override bool AppliesTo(Engine.ISessionFactoryImplementor factory) =>
// Cannot handle DbType.DateTimeOffset via .Net ODBC.
- !(factory.ConnectionProvider.Driver is OdbcDriver);
+ !(factory.ConnectionProvider.Driver.IsOdbcDriver());
protected override void Configure(Configuration configuration)
{
diff --git a/src/NHibernate.Test/TypesTest/StringTypeWithLengthFixture.cs b/src/NHibernate.Test/TypesTest/StringTypeWithLengthFixture.cs
index e3e2367f0ea..688cfcc0a73 100644
--- a/src/NHibernate.Test/TypesTest/StringTypeWithLengthFixture.cs
+++ b/src/NHibernate.Test/TypesTest/StringTypeWithLengthFixture.cs
@@ -3,7 +3,6 @@
using NHibernate.Cfg.MappingSchema;
using NHibernate.Criterion;
using NHibernate.Dialect;
-using NHibernate.Driver;
using NHibernate.Exceptions;
using NHibernate.Mapping.ByCode;
using NUnit.Framework;
@@ -66,7 +65,7 @@ protected override void OnTearDown()
public void ShouldPreventInsertionOfVeryLongStringThatWouldBeTruncated()
{
// This test case is for when the current driver will use a parameter size
- // that is significantly larger than the mapped column size (e.g. SqlClientDriver currently).
+ // that is significantly larger than the mapped column size (e.g. SqlServer2000Driver currently).
// Note: This test could possible be written as
// "database must raise an error OR it must store and return the full value"
@@ -119,7 +118,7 @@ public void CanCompareLongValueWithLongString()
{
var maxStringLength = GetLongStringMappedLength();
- if (Sfi.ConnectionProvider.Driver is OdbcDriver && maxStringLength >= 2000)
+ if (Sfi.ConnectionProvider.Driver.IsOdbcDriver() && maxStringLength >= 2000)
Assert.Ignore("Odbc wrecks nvarchar parameter types when they are longer than 2000, it switch them to ntext");
var longString = new string('x', maxStringLength);
diff --git a/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs b/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs
index 6d256dc556c..1391c472adc 100644
--- a/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/XDocTypeFixture.cs
@@ -1,6 +1,5 @@
using System.Data;
using System.Xml.Linq;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlTypes;
using NHibernate.Type;
@@ -24,7 +23,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// No Xml support with Odbc (and likely OleDb too).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs b/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs
index 128e83f63be..ee821c56144 100644
--- a/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs
+++ b/src/NHibernate.Test/TypesTest/XmlDocTypeFixture.cs
@@ -1,6 +1,5 @@
using System.Data;
using System.Xml;
-using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlTypes;
using NHibernate.Type;
@@ -24,7 +23,7 @@ protected override bool AppliesTo(Dialect.Dialect dialect)
protected override bool AppliesTo(ISessionFactoryImplementor factory)
{
// No Xml support with Odbc (and likely OleDb too).
- return factory.ConnectionProvider.Driver is SqlClientDriver;
+ return factory.ConnectionProvider.Driver.IsSqlClientDriver();
}
[Test]
diff --git a/src/NHibernate.TestDatabaseSetup/App.config b/src/NHibernate.TestDatabaseSetup/App.config
index 1fa471187b0..4ae2d69e5c4 100644
--- a/src/NHibernate.TestDatabaseSetup/App.config
+++ b/src/NHibernate.TestDatabaseSetup/App.config
@@ -1,4 +1,4 @@
-
+
- NHibernate.Driver.Sql2008ClientDriver
+ NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer
Server=.\SQLExpress;initial catalog=master;Integrated Security=SSPI
diff --git a/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs b/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs
index 46944c3abf3..2b5eea03013 100644
--- a/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs
+++ b/src/NHibernate.TestDatabaseSetup/TestDatabaseSetup.cs
@@ -20,17 +20,25 @@ public class DatabaseSetup
private static readonly IDictionary> SetupMethods = new Dictionary>
{
{"NHibernate.Driver.SqlClientDriver", SetupSqlServer},
+ {"NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer", SetupSqlServer},
{"NHibernate.Driver.Sql2008ClientDriver", SetupSqlServer},
+ {"NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer", SetupSqlServer},
{"NHibernate.Driver.FirebirdClientDriver", SetupFirebird},
+ {"NHibernate.Driver.FirebirdDriver, NHibernate.Driver.Firebird", SetupFirebird},
{"NHibernate.Driver.NpgsqlDriver", SetupNpgsql},
+ {"NHibernate.Driver.PostgreSqlDriver, NHibernate.Driver.PostgreSql", SetupNpgsql},
{"NHibernate.Driver.OracleDataClientDriver", SetupOracle},
{"NHibernate.Driver.MySqlDataDriver", SetupMySql},
+ {"NHibernate.Driver.MySqlDriver, NHibernate.Driver.MySql", SetupMySql},
{"NHibernate.Driver.OracleClientDriver", SetupOracle},
{"NHibernate.Driver.OracleManagedDataClientDriver", SetupOracle},
+ {"NHibernate.Driver.OracleManagedDriver, NHibernate.Driver.Oracle.Managed", SetupOracle},
{"NHibernate.Driver.OdbcDriver", SetupSqlServerOdbc},
#if NETFX
{"NHibernate.Driver.SQLite20Driver", SetupSQLite},
- {"NHibernate.Driver.SqlServerCeDriver", SetupSqlServerCe}
+ {"NHibernate.Driver.SQLiteDriver, NHibernate.Driver.SQLite", SetupSQLite},
+ {"NHibernate.Driver.SqlServerCeDriver", SetupSqlServerCe},
+ {"NHibernate.Driver.SqlServerCompactDriver, NHibernate.Driver.SqlServer.Compact", SetupSqlServerCe},
#endif
};
diff --git a/src/NHibernate.sln b/src/NHibernate.sln
index 67d957ed5d6..d425d64e8e3 100644
--- a/src/NHibernate.sln
+++ b/src/NHibernate.sln
@@ -1,6 +1,6 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 15
-VisualStudioVersion = 15.0.26730.12
+VisualStudioVersion = 15.0.27004.2010
MinimumVisualStudioVersion = 10.0.40219.1
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{593DCEA7-C933-46F3-939F-D8172399AB05}"
ProjectSection(SolutionItems) = preProject
@@ -24,6 +24,22 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.TestDatabaseSetu
EndProject
Project("{778DAE3C-4631-46EA-AA77-85C1314464D9}") = "NHibernate.Test.VisualBasic", "NHibernate.Test.VisualBasic\NHibernate.Test.VisualBasic.vbproj", "{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}"
EndProject
+Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Drivers", "Drivers", "{2A64334E-8456-4426-B50A-6172C6C3FDD5}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.SqlServer", "NHibernate.Driver.SqlServer\NHibernate.Driver.SqlServer.csproj", "{CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.SQLite", "NHibernate.Driver.SQLite\NHibernate.Driver.SQLite.csproj", "{99FE5A5C-F732-40A3-BEE6-ED5ADC393862}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.PostgreSql", "NHibernate.Driver.PostgreSql\NHibernate.Driver.PostgreSql.csproj", "{C7C835DC-0A59-4227-9C3C-0AF0633CD68C}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.Oracle.Managed", "NHibernate.Driver.Oracle.Managed\NHibernate.Driver.Oracle.Managed.csproj", "{22409381-1808-4F0A-9C42-9FAA6B3BCFA2}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.Firebird", "NHibernate.Driver.Firebird\NHibernate.Driver.Firebird.csproj", "{DADD54C1-3679-4672-9774-9362428EB9E0}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.SqlServer.Compact", "NHibernate.Driver.SqlServer.Compact\NHibernate.Driver.SqlServer.Compact.csproj", "{11B3C504-D501-4766-AC36-0CF1A813815B}"
+EndProject
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "NHibernate.Driver.MySql", "NHibernate.Driver.MySql\NHibernate.Driver.MySql.csproj", "{4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -50,10 +66,47 @@ Global
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}.Debug|Any CPU.Build.0 = Debug|Any CPU
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{7C2EF610-BCA0-4D1F-898A-DE9908E4970C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39}.Release|Any CPU.Build.0 = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862}.Release|Any CPU.Build.0 = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C}.Release|Any CPU.Build.0 = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2}.Release|Any CPU.Build.0 = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {DADD54C1-3679-4672-9774-9362428EB9E0}.Release|Any CPU.Build.0 = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {11B3C504-D501-4766-AC36-0CF1A813815B}.Release|Any CPU.Build.0 = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
+ GlobalSection(NestedProjects) = preSolution
+ {CF9FEEC5-3403-4F3F-9E4F-F0BAFE95DE39} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ {99FE5A5C-F732-40A3-BEE6-ED5ADC393862} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ {C7C835DC-0A59-4227-9C3C-0AF0633CD68C} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ {22409381-1808-4F0A-9C42-9FAA6B3BCFA2} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ {DADD54C1-3679-4672-9774-9362428EB9E0} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ {11B3C504-D501-4766-AC36-0CF1A813815B} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ {4F5F0C13-F302-4CEE-B60E-A55D7C30E3F8} = {2A64334E-8456-4426-B50A-6172C6C3FDD5}
+ EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {E2025263-49BD-45D7-B628-8BDD471B546C}
EndGlobalSection
diff --git a/src/NHibernate/Async/Dialect/Dialect.cs b/src/NHibernate/Async/Dialect/Dialect.cs
index fd92f72de29..659b23ec832 100644
--- a/src/NHibernate/Async/Dialect/Dialect.cs
+++ b/src/NHibernate/Async/Dialect/Dialect.cs
@@ -10,6 +10,7 @@
using System;
using System.Collections;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
@@ -18,6 +19,7 @@
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Lock;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.Exceptions;
using NHibernate.Id;
using NHibernate.Mapping;
diff --git a/src/NHibernate/Connection/ConnectionProvider.cs b/src/NHibernate/Connection/ConnectionProvider.cs
index 6a1882515b6..5be968a63bf 100644
--- a/src/NHibernate/Connection/ConnectionProvider.cs
+++ b/src/NHibernate/Connection/ConnectionProvider.cs
@@ -112,9 +112,49 @@ protected virtual void ConfigureDriver(IDictionary settings)
{
throw new HibernateException("Could not create the driver from " + driverClass + ".", e);
}
+
+#pragma warning disable 618
+ switch (driver)
+ {
+ case NpgsqlDriver _:
+ LogObsoleteDriver(nameof(NpgsqlDriver), "PostgreSql", "PostgreSqlDriver");
+ break;
+ case MySqlDataDriver _:
+ LogObsoleteDriver(nameof(MySqlDataDriver), "MySql", "MySqlDriver");
+ break;
+ case FirebirdClientDriver _:
+ LogObsoleteDriver(nameof(FirebirdClientDriver), "Firebird", "FirebirdDriver");
+ break;
+ case OracleManagedDataClientDriver _:
+ LogObsoleteDriver(nameof(OracleManagedDataClientDriver), "Oracle.Managed", "OracleManagedDriver");
+ break;
+ case SQLite20Driver _:
+ LogObsoleteDriver(nameof(SQLite20Driver), "SQLite", "SQLiteDriver");
+ break;
+ case Sql2008ClientDriver _:
+ LogObsoleteDriver(nameof(Sql2008ClientDriver), "SqlServer", "SqlServer2008Driver");
+ break;
+ case SqlClientDriver _:
+ LogObsoleteDriver(nameof(SqlClientDriver), "SqlServer", "SqlServer2000Driver");
+ break;
+ case SqlServerCeDriver _:
+ LogObsoleteDriver(nameof(SqlServerCeDriver), "SqlServer.Compact", "SqlServerCompactDriver");
+ break;
+ }
+#pragma warning restore 618
}
}
+ private static void LogObsoleteDriver(string obsoleteDriverName, string nugetName, string newDriverName)
+ {
+ log.Warn(
+ "Using \"{0}\" from main NHibernate package is obsolete."
+ + " Install the NHibernate.Driver.{1} NuGet package and change " + Environment.ConnectionDriver + " setting to \"NHibernate.Driver.{2}, NHibernate.Driver.{1}\".",
+ obsoleteDriverName,
+ nugetName,
+ newDriverName);
+ }
+
///
/// Gets the for the
/// to connect to the database.
diff --git a/src/NHibernate/Dialect/DB2400Dialect.cs b/src/NHibernate/Dialect/DB2400Dialect.cs
index aa306a0d05a..775864621b1 100644
--- a/src/NHibernate/Dialect/DB2400Dialect.cs
+++ b/src/NHibernate/Dialect/DB2400Dialect.cs
@@ -15,7 +15,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.DB2400Driver
///
///
///
@@ -61,4 +61,4 @@ public override bool SupportsVariableLimit
get { return false; }
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate/Dialect/DB2Dialect.cs b/src/NHibernate/Dialect/DB2Dialect.cs
index 6186ef6d81c..cc26e73099c 100644
--- a/src/NHibernate/Dialect/DB2Dialect.cs
+++ b/src/NHibernate/Dialect/DB2Dialect.cs
@@ -18,7 +18,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.DB2Driver
///
///
///
diff --git a/src/NHibernate/Dialect/Dialect.cs b/src/NHibernate/Dialect/Dialect.cs
index 7cf2a77d7e2..9a2cfa2bd9d 100644
--- a/src/NHibernate/Dialect/Dialect.cs
+++ b/src/NHibernate/Dialect/Dialect.cs
@@ -1,5 +1,6 @@
using System;
using System.Collections;
+using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
@@ -8,6 +9,7 @@
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Lock;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.Exceptions;
using NHibernate.Id;
using NHibernate.Mapping;
@@ -47,6 +49,7 @@ public abstract partial class Dialect
private readonly IDictionary _sqlFunctions;
private static readonly IDictionary StandardAggregateFunctions = CollectionHelper.CreateCaseInsensitiveHashtable();
+ private static readonly ConcurrentDictionary ExternalDriverExistsCache = new ConcurrentDictionary();
private static readonly IViolatedConstraintNameExtracter Extracter;
@@ -2576,5 +2579,12 @@ public virtual ISQLExceptionConverter BuildSQLExceptionConverter()
// may override to return whatever is most appropriate for that vendor.
return new SQLStateConverter(ViolatedConstraintNameExtracter);
}
+
+ internal static string GetDriverName(string preferredName) where TFallback : IDriver
+ {
+ return ExternalDriverExistsCache.GetOrAdd(preferredName, s => ReflectHelper.ClassForFullNameOrNull(s) == null)
+ ? typeof(TFallback).FullName
+ : preferredName;
+ }
}
}
diff --git a/src/NHibernate/Dialect/FirebirdDialect.cs b/src/NHibernate/Dialect/FirebirdDialect.cs
index 5883dfe2344..50e0cc3829a 100644
--- a/src/NHibernate/Dialect/FirebirdDialect.cs
+++ b/src/NHibernate/Dialect/FirebirdDialect.cs
@@ -4,9 +4,11 @@
using System.Data.Common;
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.Type;
+using NHibernate.Util;
using Environment = NHibernate.Cfg.Environment;
namespace NHibernate.Dialect
@@ -23,7 +25,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.FirebirdDriver, NHibernate.Driver.Firebird
///
///
///
@@ -34,7 +36,10 @@ public FirebirdDialect()
RegisterKeywords();
RegisterColumnTypes();
RegisterFunctions();
- DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.FirebirdClientDriver";
+ DefaultProperties[Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.FirebirdDriver, NHibernate.Driver.Firebird");
+#pragma warning restore 618
}
public override string AddColumnString
diff --git a/src/NHibernate/Dialect/InformixDialect.cs b/src/NHibernate/Dialect/InformixDialect.cs
index 2fdef648f86..463dd9b8ed6 100644
--- a/src/NHibernate/Dialect/InformixDialect.cs
+++ b/src/NHibernate/Dialect/InformixDialect.cs
@@ -28,7 +28,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.OdbcDriver
///
///
///
diff --git a/src/NHibernate/Dialect/InformixDialect0940.cs b/src/NHibernate/Dialect/InformixDialect0940.cs
index 59ef5b7a6e6..7c22a4ac9b5 100644
--- a/src/NHibernate/Dialect/InformixDialect0940.cs
+++ b/src/NHibernate/Dialect/InformixDialect0940.cs
@@ -26,7 +26,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.OdbcDriver
///
///
///
diff --git a/src/NHibernate/Dialect/InformixDialect1000.cs b/src/NHibernate/Dialect/InformixDialect1000.cs
index db4c9781591..1b7d7cf503e 100644
--- a/src/NHibernate/Dialect/InformixDialect1000.cs
+++ b/src/NHibernate/Dialect/InformixDialect1000.cs
@@ -25,7 +25,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.OdbcDriver
///
///
///
diff --git a/src/NHibernate/Dialect/IngresDialect.cs b/src/NHibernate/Dialect/IngresDialect.cs
index f6197f328ae..9d029e92861 100644
--- a/src/NHibernate/Dialect/IngresDialect.cs
+++ b/src/NHibernate/Dialect/IngresDialect.cs
@@ -15,7 +15,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.IngresDriver
///
///
///
diff --git a/src/NHibernate/Dialect/MsSql2000Dialect.cs b/src/NHibernate/Dialect/MsSql2000Dialect.cs
index 929fc15ac74..a6004299be0 100644
--- a/src/NHibernate/Dialect/MsSql2000Dialect.cs
+++ b/src/NHibernate/Dialect/MsSql2000Dialect.cs
@@ -5,6 +5,7 @@
using System.Text.RegularExpressions;
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.Mapping;
using NHibernate.SqlCommand;
@@ -27,7 +28,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer
///
/// -
/// adonet.batch_size
@@ -68,7 +69,10 @@ public MsSql2000Dialect()
protected virtual void RegisterDefaultProperties()
{
- DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlClientDriver";
+ DefaultProperties[Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.SqlServer2000Driver, NHibernate.Driver.SqlServer");
+#pragma warning restore 618
DefaultProperties[Environment.BatchSize] = "20";
DefaultProperties[Environment.QuerySubstitutions] = "true 1, false 0, yes 'Y', no 'N'";
}
diff --git a/src/NHibernate/Dialect/MsSql2008Dialect.cs b/src/NHibernate/Dialect/MsSql2008Dialect.cs
index d19bfc7b19c..9b0f338bf56 100644
--- a/src/NHibernate/Dialect/MsSql2008Dialect.cs
+++ b/src/NHibernate/Dialect/MsSql2008Dialect.cs
@@ -69,7 +69,10 @@ protected override void RegisterKeywords()
protected override void RegisterDefaultProperties()
{
base.RegisterDefaultProperties();
- DefaultProperties[Environment.ConnectionDriver] = typeof(Sql2008ClientDriver).AssemblyQualifiedName;
+ DefaultProperties[Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.SqlServer2008Driver, NHibernate.Driver.SqlServer");
+#pragma warning restore 618
}
public override string CurrentTimestampSQLFunctionName =>
diff --git a/src/NHibernate/Dialect/MsSqlCeDialect.cs b/src/NHibernate/Dialect/MsSqlCeDialect.cs
index 88c1fa21be1..d4b7c4c97d9 100644
--- a/src/NHibernate/Dialect/MsSqlCeDialect.cs
+++ b/src/NHibernate/Dialect/MsSqlCeDialect.cs
@@ -4,6 +4,7 @@
using System.Text;
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.Id;
using NHibernate.SqlCommand;
using NHibernate.Util;
@@ -203,7 +204,10 @@ protected virtual void RegisterFunctions()
protected virtual void RegisterDefaultProperties()
{
- DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.SqlServerCeDriver";
+ DefaultProperties[Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.SqlServerCompactDriver, NHibernate.Driver.SqlServer.Compact");
+#pragma warning restore 618
DefaultProperties[Environment.PrepareSql] = "false";
}
diff --git a/src/NHibernate/Dialect/MySQLDialect.cs b/src/NHibernate/Dialect/MySQLDialect.cs
index 59539395226..e44dc09750c 100644
--- a/src/NHibernate/Dialect/MySQLDialect.cs
+++ b/src/NHibernate/Dialect/MySQLDialect.cs
@@ -4,6 +4,7 @@
using System.Text;
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.SqlCommand;
using NHibernate.SqlTypes;
using NHibernate.Util;
@@ -23,7 +24,7 @@ namespace NHibernate.Dialect
///
///
-
/// connection.driver_class
- ///
+ /// NHibernate.Driver.MySqlDriver, NHibernate.Driver.MySql
///
///
///
@@ -114,7 +115,10 @@ public MySQLDialect()
//functions:
RegisterFunctions();
- DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.MySqlDataDriver";
+ DefaultProperties[Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.MySqlDriver, NHibernate.Driver.MySql");
+#pragma warning restore 618
}
#region private static readonly string[] DialectKeywords = { ... }
diff --git a/src/NHibernate/Dialect/OracleLiteDialect.cs b/src/NHibernate/Dialect/OracleLiteDialect.cs
index cf5e33914a5..90a78438690 100644
--- a/src/NHibernate/Dialect/OracleLiteDialect.cs
+++ b/src/NHibernate/Dialect/OracleLiteDialect.cs
@@ -17,7 +17,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.OracleLiteDataClientDriver
///
///
///
diff --git a/src/NHibernate/Dialect/PostgreSQLDialect.cs b/src/NHibernate/Dialect/PostgreSQLDialect.cs
index c1653a36a6f..bddaff50002 100644
--- a/src/NHibernate/Dialect/PostgreSQLDialect.cs
+++ b/src/NHibernate/Dialect/PostgreSQLDialect.cs
@@ -4,6 +4,7 @@
using System.Data.Common;
using NHibernate.Dialect.Function;
using NHibernate.Dialect.Schema;
+using NHibernate.Driver;
using NHibernate.Engine;
using NHibernate.SqlCommand;
using NHibernate.SqlTypes;
@@ -24,7 +25,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.PostgreSqlDriver, NHibernate.Driver.PostgreSql
///
///
///
@@ -32,7 +33,10 @@ public class PostgreSQLDialect : Dialect
{
public PostgreSQLDialect()
{
- DefaultProperties[Environment.ConnectionDriver] = "NHibernate.Driver.NpgsqlDriver";
+ DefaultProperties[Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.PostgreSqlDriver, NHibernate.Driver.PostgreSql");
+#pragma warning restore 618
RegisterDateTimeTypeMappings();
RegisterColumnType(DbType.AnsiStringFixedLength, "char(255)");
diff --git a/src/NHibernate/Dialect/SQLiteDialect.cs b/src/NHibernate/Dialect/SQLiteDialect.cs
index 4a0bb5390ff..dabd41b4a1a 100644
--- a/src/NHibernate/Dialect/SQLiteDialect.cs
+++ b/src/NHibernate/Dialect/SQLiteDialect.cs
@@ -3,6 +3,7 @@
using System.Data.Common;
using System.Text;
using NHibernate.Dialect.Function;
+using NHibernate.Driver;
using NHibernate.SqlCommand;
using NHibernate.Util;
@@ -180,7 +181,10 @@ protected virtual void RegisterKeywords()
protected virtual void RegisterDefaultProperties()
{
- DefaultProperties[Cfg.Environment.ConnectionDriver] = "NHibernate.Driver.SQLite20Driver";
+ DefaultProperties[Cfg.Environment.ConnectionDriver] =
+#pragma warning disable 618
+ GetDriverName("NHibernate.Driver.SQLiteDriver, NHibernate.Driver.SQLite");
+#pragma warning restore 618
DefaultProperties[Cfg.Environment.QuerySubstitutions] = "true 1, false 0, yes 'Y', no 'N'";
}
diff --git a/src/NHibernate/Dialect/SybaseASA9Dialect.cs b/src/NHibernate/Dialect/SybaseASA9Dialect.cs
index 12ad1e3c088..81ec5fa8f00 100644
--- a/src/NHibernate/Dialect/SybaseASA9Dialect.cs
+++ b/src/NHibernate/Dialect/SybaseASA9Dialect.cs
@@ -24,7 +24,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.SybaseAsaClientDriver
///
/// -
/// prepare_sql
diff --git a/src/NHibernate/Dialect/SybaseASE15Dialect.cs b/src/NHibernate/Dialect/SybaseASE15Dialect.cs
index 5ccceff3176..757469fe40c 100644
--- a/src/NHibernate/Dialect/SybaseASE15Dialect.cs
+++ b/src/NHibernate/Dialect/SybaseASE15Dialect.cs
@@ -21,7 +21,7 @@ namespace NHibernate.Dialect
///
///
-
/// connection.driver_class
- ///
+ /// NHibernate.Driver.SybaseAseClientDriver
///
///
///
diff --git a/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs b/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs
index bd07ff22c2e..519efcc3c5e 100644
--- a/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs
+++ b/src/NHibernate/Dialect/SybaseSQLAnywhere10Dialect.cs
@@ -38,7 +38,7 @@ namespace NHibernate.Dialect
///
/// -
/// connection.driver_class
- ///
+ /// NHibernate.Driver.SybaseSQLAnywhereDriver
///
/// -
/// prepare_sql
diff --git a/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs b/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs
index d28f67cdffe..b05d89a29b2 100644
--- a/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs
+++ b/src/NHibernate/Dialect/SybaseSQLAnywhere11Dialect.cs
@@ -32,7 +32,7 @@ namespace NHibernate.Dialect
///
///
-
/// connection.driver_class
- ///
+ /// NHibernate.Driver.SybaseSQLAnywhereDriver
///
/// -
/// prepare_sql
diff --git a/src/NHibernate/Dialect/SybaseSQLAnywhere12Dialect.cs b/src/NHibernate/Dialect/SybaseSQLAnywhere12Dialect.cs
index e99a40a3b26..adf55c5c395 100644
--- a/src/NHibernate/Dialect/SybaseSQLAnywhere12Dialect.cs
+++ b/src/NHibernate/Dialect/SybaseSQLAnywhere12Dialect.cs
@@ -43,7 +43,7 @@ namespace NHibernate.Dialect
///
///
-
/// connection.driver_class
- ///
+ /// NHibernate.Driver.SybaseSQLAnywhereDotNet4Driver
///
/// -
/// prepare_sql
@@ -127,4 +127,4 @@ public override IDataBaseSchema GetDataBaseSchema(DbConnection connection)
return new SybaseAnywhereDataBaseMetaData(connection);
}
}
-}
\ No newline at end of file
+}
diff --git a/src/NHibernate/Driver/FirebirdClientDriver.cs b/src/NHibernate/Driver/FirebirdClientDriver.cs
index 065e8b6c2d9..c604796ac22 100644
--- a/src/NHibernate/Driver/FirebirdClientDriver.cs
+++ b/src/NHibernate/Driver/FirebirdClientDriver.cs
@@ -10,13 +10,23 @@
using NHibernate.SqlTypes;
using NHibernate.Util;
+#if DRIVER_PACKAGE
+using FirebirdSql.Data.FirebirdClient;
+#endif
+
namespace NHibernate.Driver
{
///
/// A NHibernate Driver for using the Firebird data provider located in
/// FirebirdSql.Data.FirebirdClient assembly.
///
+#if DRIVER_PACKAGE
+ public class FirebirdDriver : DriverBase
+#else
+ [Obsolete("Use NHibernate.Driver.Firebird NuGet package and FirebirdDriver."
+ + " There are also Loquacious configuration points: .Connection.ByFirebirdDriver() and .DataBaseIntegration(x => x.FirebirdDriver()).")]
public class FirebirdClientDriver : ReflectionBasedDriver
+#endif
{
private const string SELECT_CLAUSE_EXP = @"(?<=\bselect|\bwhere).*";
private const string CAST_PARAMS_EXP = @"(?]\s?|first\s?|skip\s?|between\s|between\s@\bp\w+\b\sand\s)@\bp\w+\b(?!\s?[=<>])";
@@ -24,6 +34,7 @@ public class FirebirdClientDriver : ReflectionBasedDriver
private static readonly Regex _castCandidateRegEx = new Regex(CAST_PARAMS_EXP, RegexOptions.IgnoreCase);
private readonly FirebirdDialect _fbDialect = new FirebirdDialect();
+#if !DRIVER_PACKAGE
///
/// Initializes a new instance of the class.
///
@@ -38,6 +49,19 @@ public FirebirdClientDriver()
"FirebirdSql.Data.FirebirdClient.FbCommand")
{
}
+#endif
+
+#if DRIVER_PACKAGE
+ public override DbConnection CreateConnection()
+ {
+ return new FbConnection();
+ }
+
+ public override DbCommand CreateCommand()
+ {
+ return new FbCommand();
+ }
+#endif
public override void Configure(IDictionary settings)
{
@@ -118,8 +142,10 @@ private string GetFbTypeForParam(SqlType sqlType)
return _fbDialect.GetCastTypeName(sqlType);
}
+#if !DRIVER_PACKAGE
private static volatile MethodInfo _clearPool;
private static volatile MethodInfo _clearAllPools;
+#endif
///
/// Clears the connection pool.
@@ -128,6 +154,19 @@ private string GetFbTypeForParam(SqlType sqlType)
/// null for clearing them all.
public void ClearPool(string connectionString)
{
+#if DRIVER_PACKAGE
+ if (connectionString != null)
+ {
+ using (var clearConnection = CreateConnection())
+ {
+ clearConnection.ConnectionString = connectionString;
+ FbConnection.ClearPool((FbConnection)clearConnection);
+ }
+ return;
+ }
+
+ FbConnection.ClearAllPools();
+#else
// In case of concurrent threads, may initialize many times. We do not care.
// Members are volatile for avoiding it gets used while its constructor is not yet ended.
if (_clearPool == null || _clearAllPools == null)
@@ -151,10 +190,11 @@ public void ClearPool(string connectionString)
}
_clearAllPools.Invoke(null, Array.Empty
///
+#if DRIVER_PACKAGE
+ public class MySqlDriver : DriverBase, IEmbeddedBatcherFactoryProvider
+#else
+ [Obsolete("Use NHibernate.Driver.MySql NuGet package and MySqlDriver."
+ + " There are also Loquacious configuration points: .Connection.ByMySqlDriver() and .DataBaseIntegration(x => x.MySqlDriver()).")]
public class MySqlDataDriver : ReflectionBasedDriver, IEmbeddedBatcherFactoryProvider
+#endif
{
+#if !DRIVER_PACKAGE
///
/// Initializes a new instance of the class.
///
@@ -32,6 +40,19 @@ public MySqlDataDriver() : base(
"MySql.Data.MySqlClient.MySqlCommand")
{
}
+#endif
+
+#if DRIVER_PACKAGE
+ public override DbConnection CreateConnection()
+ {
+ return new MySql.Data.MySqlClient.MySqlConnection();
+ }
+
+ public override DbCommand CreateCommand()
+ {
+ return new MySql.Data.MySqlClient.MySqlCommand();
+ }
+#endif
///
/// MySql.Data uses named parameters in the sql.
diff --git a/src/NHibernate/Driver/NpgsqlDriver.cs b/src/NHibernate/Driver/NpgsqlDriver.cs
index ccfd2dc1be2..d9507f26886 100644
--- a/src/NHibernate/Driver/NpgsqlDriver.cs
+++ b/src/NHibernate/Driver/NpgsqlDriver.cs
@@ -1,3 +1,4 @@
+using System;
using System.Data;
using System.Data.Common;
using NHibernate.AdoNet;
@@ -25,8 +26,23 @@ namespace NHibernate.Driver
/// http://pgfoundry.org/projects/npgsql.
///
///
+#if DRIVER_PACKAGE
+ public class PostgreSqlDriver : DriverBase, IEmbeddedBatcherFactoryProvider
+#else
+ [Obsolete("Use NHibernate.Driver.PostgreSql NuGet package and PostgreSqlDriver."
+ + " There are also Loquacious configuration points: .Connection.ByPostgreSqlDriver() and .DataBaseIntegration(x => x.PostgreSqlDriver()).")]
public class NpgsqlDriver : ReflectionBasedDriver, IEmbeddedBatcherFactoryProvider
+#endif
{
+#if DRIVER_PACKAGE
+ ///
+ /// Initializes a new instance of the class.
+ ///
+ public PostgreSqlDriver()
+ {
+ DriverVersion = typeof(Npgsql.NpgsqlCommand).Assembly.GetName().Version;
+ }
+#else
///
/// Initializes a new instance of the class.
///
@@ -40,6 +56,24 @@ public NpgsqlDriver() : base(
"Npgsql.NpgsqlCommand")
{
}
+#endif
+
+#if DRIVER_PACKAGE
+ ///
+ /// The driver assembly version.
+ ///
+ protected Version DriverVersion { get; }
+
+ public override DbConnection CreateConnection()
+ {
+ return new Npgsql.NpgsqlConnection();
+ }
+
+ public override DbCommand CreateCommand()
+ {
+ return new Npgsql.NpgsqlCommand();
+ }
+#endif
public override bool UseNamedPrefixInSql => true;
diff --git a/src/NHibernate/Driver/OracleManagedDataClientDriver.cs b/src/NHibernate/Driver/OracleManagedDataClientDriver.cs
index 247a84dfaff..de606ef29a4 100644
--- a/src/NHibernate/Driver/OracleManagedDataClientDriver.cs
+++ b/src/NHibernate/Driver/OracleManagedDataClientDriver.cs
@@ -1,8 +1,12 @@
+using System;
+
namespace NHibernate.Driver
{
///
/// A NHibernate Driver for using the Oracle.ManagedDataAccess DataProvider
///
+ [Obsolete("Use NHibernate.Driver.Oracle.Managed NuGet package and OracleManagedDriver."
+ + " There are also Loquacious configuration points: .Connection.ByOracleManagedDriver() and .DataBaseIntegration(x => x.OracleManagedDriver()).")]
public class OracleManagedDataClientDriver : OracleDataClientDriverBase
{
///
diff --git a/src/NHibernate/Driver/SQLite20Driver.cs b/src/NHibernate/Driver/SQLite20Driver.cs
index 8f84a216869..a472d98b0d0 100644
--- a/src/NHibernate/Driver/SQLite20Driver.cs
+++ b/src/NHibernate/Driver/SQLite20Driver.cs
@@ -1,3 +1,4 @@
+using System;
using System.Data;
using System.Data.Common;
@@ -19,28 +20,54 @@ namespace NHibernate.Driver
/// Please check https://www.sqlite.org/ for more information regarding SQLite.
///
///
+#if DRIVER_PACKAGE
+ public class SQLiteDriver : DriverBase
+#else
+ [Obsolete("Use NHibernate.Driver.SQlLite NuGet package and SQLiteDriver."
+ + " There are also Loquacious configuration points: .Connection.BySQLiteDriver() and .DataBaseIntegration(x => x.SQLiteDriver()).")]
public class SQLite20Driver : ReflectionBasedDriver
+#endif
{
+#if DRIVER_PACKAGE
+ public SQLiteDriver()
+ {}
+#else
///
/// Initializes a new instance of .
///
///
/// Thrown when the SQLite.NET assembly can not be loaded.
///
- public SQLite20Driver() : base(
- "System.Data.SQLite",
- "System.Data.SQLite",
- "System.Data.SQLite.SQLiteConnection",
- "System.Data.SQLite.SQLiteCommand")
+ public SQLite20Driver()
+ : base(
+ "System.Data.SQLite",
+ "System.Data.SQLite",
+ "System.Data.SQLite.SQLiteConnection",
+ "System.Data.SQLite.SQLiteCommand")
{
}
+#endif
+#if DRIVER_PACKAGE
+ public override DbConnection CreateConnection()
+ {
+ var connection = new System.Data.SQLite.SQLiteConnection();
+ connection.StateChange += Connection_StateChange;
+ return connection;
+ }
+
+ public override DbCommand CreateCommand()
+ {
+ return new System.Data.SQLite.SQLiteCommand();
+ }
+#else
public override DbConnection CreateConnection()
{
var connection = base.CreateConnection();
connection.StateChange += Connection_StateChange;
return connection;
}
+#endif
private static void Connection_StateChange(object sender, StateChangeEventArgs e)
{
diff --git a/src/NHibernate/Driver/Sql2008ClientDriver.cs b/src/NHibernate/Driver/Sql2008ClientDriver.cs
index 0068832139f..a43a8fb9b1b 100644
--- a/src/NHibernate/Driver/Sql2008ClientDriver.cs
+++ b/src/NHibernate/Driver/Sql2008ClientDriver.cs
@@ -5,11 +5,17 @@
namespace NHibernate.Driver
{
+#if DRIVER_PACKAGE
+ public class SqlServer2008Driver : SqlServer2000Driver
+#else
+ [Obsolete("Use NHibernate.Driver.SqlServer NuGet package and SqlServer2008Driver."
+ + " There are also Loquacious configuration points: .Connection.BySqlServer2008Driver() and .DataBaseIntegration(x => x.SqlServer2008Driver()).")]
public class Sql2008ClientDriver : SqlClientDriver
+#endif
{
const byte MaxTime = 5;
- #if NETFX
+ #if NETFX || DRIVER_PACKAGE
private static readonly Action