From 05be46a753ea982fe1123a2e26d1390bed562c0c Mon Sep 17 00:00:00 2001 From: Ricardo Peres Date: Sat, 18 Oct 2014 09:35:46 +0100 Subject: [PATCH 1/4] NH-3724 Added support for notification handlers (InfoMessage event in most ADO.NET drivers) --- .../CfgTest/Loquacious/ConfigurationFixture.cs | 15 +++++++++++++++ src/NHibernate/AdoNet/ConnectionManager.cs | 5 +++++ src/NHibernate/Cfg/Configuration.cs | 7 +++++++ .../DbIntegrationConfigurationProperties.cs | 7 +++++++ .../IDbIntegrationConfigurationProperties.cs | 4 ++++ src/NHibernate/Cfg/Settings.cs | 3 +++ src/NHibernate/Driver/DB2400Driver.cs | 9 +++++++++ src/NHibernate/Driver/DB2Driver.cs | 9 +++++++++ src/NHibernate/Driver/DotConnectMySqlDriver.cs | 13 ++++++++++++- src/NHibernate/Driver/DriverBase.cs | 6 ++++++ src/NHibernate/Driver/FirebirdClientDriver.cs | 9 +++++++++ src/NHibernate/Driver/IDriver.cs | 8 ++++++++ src/NHibernate/Driver/IfxDriver.cs | 11 +++++++++++ src/NHibernate/Driver/IngresDriver.cs | 9 +++++++++ src/NHibernate/Driver/MySqlDataDriver.cs | 9 +++++++++ src/NHibernate/Driver/NpgsqlDriver.cs | 9 +++++++++ src/NHibernate/Driver/OdbcDriver.cs | 11 +++++++++++ src/NHibernate/Driver/OleDbDriver.cs | 11 +++++++++++ src/NHibernate/Driver/OracleClientDriver.cs | 9 +++++++++ src/NHibernate/Driver/OracleDataClientDriver.cs | 8 ++++++++ .../Driver/OracleLiteDataClientDriver.cs | 9 +++++++++ .../Driver/OracleManagedDataClientDriver.cs | 8 ++++++++ src/NHibernate/Driver/SqlClientDriver.cs | 12 ++++++++++++ src/NHibernate/Driver/SqlServerCeDriver.cs | 8 ++++++++ src/NHibernate/Driver/SybaseAsaClientDriver.cs | 9 +++++++++ src/NHibernate/Driver/SybaseAseClientDriver.cs | 11 ++++++++++- .../Driver/SybaseSQLAnywhereDotNet4Driver.cs | 13 ++++++++++++- src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs | 13 ++++++++++++- 28 files changed, 251 insertions(+), 4 deletions(-) diff --git a/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs b/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs index f6e0afc42d7..9bee2ae6f36 100644 --- a/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs +++ b/src/NHibernate.Test/CfgTest/Loquacious/ConfigurationFixture.cs @@ -1,3 +1,4 @@ +using System; using System.Data; using System.Data.SqlClient; using NHibernate.AdoNet; @@ -10,12 +11,26 @@ using NHibernate.Hql.Ast.ANTLR; using NHibernate.Type; using NUnit.Framework; +using Environment = NHibernate.Cfg.Environment; namespace NHibernate.Test.CfgTest.Loquacious { [TestFixture] public class ConfigurationFixture { + [Test] + public void CanSetNotificationHandler() + { + //NH-3724 + EventHandler handler = (s, e) => {}; + var cfg = new Configuration().DataBaseIntegration(x => + { + x.WithNotificationHandler(handler); + }).Configure(); + + Assert.IsNotNull(cfg.NotificationHandler); + } + [Test] public void CompleteConfiguration() { diff --git a/src/NHibernate/AdoNet/ConnectionManager.cs b/src/NHibernate/AdoNet/ConnectionManager.cs index ef6b4b3d892..376b23638c7 100644 --- a/src/NHibernate/AdoNet/ConnectionManager.cs +++ b/src/NHibernate/AdoNet/ConnectionManager.cs @@ -184,6 +184,11 @@ public IDbConnection GetConnection() if (ownConnection) { connection = Factory.ConnectionProvider.GetConnection(); + //NH-3724 + if (Factory.Settings.NotificationHandler != null) + { + Factory.ConnectionProvider.Driver.AddNotificationHandler(connection, Factory.Settings.NotificationHandler); + } if (Factory.Statistics.IsStatisticsEnabled) { Factory.StatisticsImplementor.Connect(); diff --git a/src/NHibernate/Cfg/Configuration.cs b/src/NHibernate/Cfg/Configuration.cs index 4a17753689f..499fa686fa3 100644 --- a/src/NHibernate/Cfg/Configuration.cs +++ b/src/NHibernate/Cfg/Configuration.cs @@ -185,6 +185,7 @@ protected void Reset() tableNameBinding = new Dictionary(); columnNameBindingPerTable = new Dictionary(); filtersSecondPasses = new Queue(); + NotificationHandler = null; } [Serializable] private class Mapping : IMapping @@ -1337,6 +1338,10 @@ public Configuration SetDefaultNamespace(string newDefaultNamespace) return this; } + //NH-3724 + [field: NonSerialized] + public Delegate NotificationHandler { get; set; } + /// /// Sets the default interceptor for use by all sessions. /// @@ -1725,6 +1730,8 @@ private Settings BuildSettings() // NH : Set configuration for IdGenerator SQL logging PersistentIdGeneratorParmsNames.SqlStatementLogger.FormatSql = result.SqlStatementLogger.FormatSql; PersistentIdGeneratorParmsNames.SqlStatementLogger.LogToStdout = result.SqlStatementLogger.LogToStdout; + //NH-3724 + result.NotificationHandler = NotificationHandler; return result; } diff --git a/src/NHibernate/Cfg/Loquacious/DbIntegrationConfigurationProperties.cs b/src/NHibernate/Cfg/Loquacious/DbIntegrationConfigurationProperties.cs index 13d022940bb..fb567e1739c 100644 --- a/src/NHibernate/Cfg/Loquacious/DbIntegrationConfigurationProperties.cs +++ b/src/NHibernate/Cfg/Loquacious/DbIntegrationConfigurationProperties.cs @@ -1,3 +1,4 @@ +using System; using System.Data; using NHibernate.AdoNet; using NHibernate.Connection; @@ -18,6 +19,12 @@ public DbIntegrationConfigurationProperties(Configuration configuration) #region Implementation of IDbIntegrationConfigurationProperties + public void WithNotificationHandler(Delegate handler) + { + //NH-3724 + configuration.NotificationHandler = handler; + } + public void Dialect() where TDialect : Dialect.Dialect { configuration.SetProperty(Environment.Dialect, typeof(TDialect).AssemblyQualifiedName); diff --git a/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfigurationProperties.cs b/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfigurationProperties.cs index ec39020f1f0..dd686e1a64f 100644 --- a/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfigurationProperties.cs +++ b/src/NHibernate/Cfg/Loquacious/IDbIntegrationConfigurationProperties.cs @@ -1,3 +1,4 @@ +using System; using System.Data; using NHibernate.AdoNet; using NHibernate.Connection; @@ -14,6 +15,9 @@ public interface IDbIntegrationConfigurationProperties bool LogSqlInConsole { set; } bool LogFormattedSql { set; } + //NH-3724 + void WithNotificationHandler(Delegate handler); + void ConnectionProvider() where TProvider : IConnectionProvider; void Driver() where TDriver : IDriver; IsolationLevel IsolationLevel { set; } diff --git a/src/NHibernate/Cfg/Settings.cs b/src/NHibernate/Cfg/Settings.cs index 1f3ec992233..0e35e640976 100644 --- a/src/NHibernate/Cfg/Settings.cs +++ b/src/NHibernate/Cfg/Settings.cs @@ -31,6 +31,9 @@ public Settings() //private bool isJdbcBatchVersionedData; #endregion + + public Delegate NotificationHandler { get; internal set; } + public SqlStatementLogger SqlStatementLogger { get; internal set; } public int MaximumFetchDepth { get; internal set; } diff --git a/src/NHibernate/Driver/DB2400Driver.cs b/src/NHibernate/Driver/DB2400Driver.cs index c2c128bc68d..28b133c4da7 100644 --- a/src/NHibernate/Driver/DB2400Driver.cs +++ b/src/NHibernate/Driver/DB2400Driver.cs @@ -1,4 +1,5 @@ using System; +using System.Data; namespace NHibernate.Driver { @@ -20,6 +21,14 @@ public DB2400Driver() : base( { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/DB2Driver.cs b/src/NHibernate/Driver/DB2Driver.cs index 93c1b26bd1f..425a8b24c46 100644 --- a/src/NHibernate/Driver/DB2Driver.cs +++ b/src/NHibernate/Driver/DB2Driver.cs @@ -1,4 +1,5 @@ using System; +using System.Data; namespace NHibernate.Driver { @@ -21,6 +22,14 @@ public DB2Driver() : base( { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/DotConnectMySqlDriver.cs b/src/NHibernate/Driver/DotConnectMySqlDriver.cs index 1aff3e20fb7..806bbee3b8c 100644 --- a/src/NHibernate/Driver/DotConnectMySqlDriver.cs +++ b/src/NHibernate/Driver/DotConnectMySqlDriver.cs @@ -1,4 +1,7 @@ -namespace NHibernate.Driver +using System; +using System.Data; + +namespace NHibernate.Driver { /// /// Provides a database driver for dotConnect for MySQL by DevArt. @@ -28,6 +31,14 @@ public DotConnectMySqlDriver() : base( { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + /// /// Devart.Data.MySql uses named parameters in the sql. /// diff --git a/src/NHibernate/Driver/DriverBase.cs b/src/NHibernate/Driver/DriverBase.cs index c4e10e60f47..d443bdacbda 100644 --- a/src/NHibernate/Driver/DriverBase.cs +++ b/src/NHibernate/Driver/DriverBase.cs @@ -20,6 +20,12 @@ public abstract class DriverBase : IDriver, ISqlParameterFormatter private int commandTimeout; private bool prepareSql; + public virtual void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + //do nothing by default + } + public virtual void Configure(IDictionary settings) { // Command timeout diff --git a/src/NHibernate/Driver/FirebirdClientDriver.cs b/src/NHibernate/Driver/FirebirdClientDriver.cs index 0543b77bac2..adfa303f52a 100644 --- a/src/NHibernate/Driver/FirebirdClientDriver.cs +++ b/src/NHibernate/Driver/FirebirdClientDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Data; using System.Linq; @@ -35,6 +36,14 @@ public FirebirdClientDriver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/IDriver.cs b/src/NHibernate/Driver/IDriver.cs index d860d5d23ce..77d5ef12739 100644 --- a/src/NHibernate/Driver/IDriver.cs +++ b/src/NHibernate/Driver/IDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Collections.Generic; using System.Data; using NHibernate.Engine; @@ -35,6 +36,13 @@ public interface IDriver /// void Configure(IDictionary settings); + //NH-3724 + /// + /// Attaches an event handler for the notification event (InfoMessage in most ADO.NET drivers). + /// + /// + void AddNotificationHandler(IDbConnection con, Delegate handler); + /// /// Creates an uninitialized IDbConnection object for the specific Driver /// diff --git a/src/NHibernate/Driver/IfxDriver.cs b/src/NHibernate/Driver/IfxDriver.cs index 0d3c3bebbd2..fd012dc3d84 100644 --- a/src/NHibernate/Driver/IfxDriver.cs +++ b/src/NHibernate/Driver/IfxDriver.cs @@ -1,3 +1,6 @@ +using System; +using System.Data; + namespace NHibernate.Driver { /// @@ -20,6 +23,14 @@ public IfxDriver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/IngresDriver.cs b/src/NHibernate/Driver/IngresDriver.cs index a82932bd1ab..81df0c0f0a9 100644 --- a/src/NHibernate/Driver/IngresDriver.cs +++ b/src/NHibernate/Driver/IngresDriver.cs @@ -1,4 +1,5 @@ using System; +using System.Data; namespace NHibernate.Driver { @@ -11,6 +12,14 @@ public class IngresDriver : ReflectionBasedDriver { public IngresDriver() : base("Ingres.Client", "Ingres.Client.IngresConnection", "Ingres.Client.IngresCommand") {} + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/MySqlDataDriver.cs b/src/NHibernate/Driver/MySqlDataDriver.cs index 5b04e454945..224e342a43a 100644 --- a/src/NHibernate/Driver/MySqlDataDriver.cs +++ b/src/NHibernate/Driver/MySqlDataDriver.cs @@ -1,4 +1,5 @@ using System; +using System.Data; namespace NHibernate.Driver { @@ -32,6 +33,14 @@ public MySqlDataDriver() : base( { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + /// /// MySql.Data uses named parameters in the sql. /// diff --git a/src/NHibernate/Driver/NpgsqlDriver.cs b/src/NHibernate/Driver/NpgsqlDriver.cs index e324f13304b..52c615b6a7f 100644 --- a/src/NHibernate/Driver/NpgsqlDriver.cs +++ b/src/NHibernate/Driver/NpgsqlDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Data; namespace NHibernate.Driver @@ -39,6 +40,14 @@ public NpgsqlDriver() : base( { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("Notification").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/OdbcDriver.cs b/src/NHibernate/Driver/OdbcDriver.cs index f9e069fdeda..03c9e2c9e1a 100644 --- a/src/NHibernate/Driver/OdbcDriver.cs +++ b/src/NHibernate/Driver/OdbcDriver.cs @@ -13,6 +13,17 @@ namespace NHibernate.Driver /// public class OdbcDriver : DriverBase { + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + if (handler is OdbcInfoMessageEventHandler) + { + (con as OdbcConnection).InfoMessage += (OdbcInfoMessageEventHandler)handler; + } + + base.AddNotificationHandler(con, handler); + } + public override IDbConnection CreateConnection() { return new OdbcConnection(); diff --git a/src/NHibernate/Driver/OleDbDriver.cs b/src/NHibernate/Driver/OleDbDriver.cs index 130699667a5..70312af2758 100644 --- a/src/NHibernate/Driver/OleDbDriver.cs +++ b/src/NHibernate/Driver/OleDbDriver.cs @@ -16,6 +16,17 @@ public OleDbDriver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + if (handler is OleDbInfoMessageEventHandler) + { + (con as OleDbConnection).InfoMessage += (OleDbInfoMessageEventHandler)handler; + } + + base.AddNotificationHandler(con, handler); + } + public override IDbConnection CreateConnection() { return new OleDbConnection(); diff --git a/src/NHibernate/Driver/OracleClientDriver.cs b/src/NHibernate/Driver/OracleClientDriver.cs index f93b848b1eb..89a49561aa2 100644 --- a/src/NHibernate/Driver/OracleClientDriver.cs +++ b/src/NHibernate/Driver/OracleClientDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Data; using NHibernate.Engine.Query; using NHibernate.SqlTypes; @@ -18,6 +19,14 @@ public OracleClientDriver() : "System.Data.OracleClient.OracleConnection", "System.Data.OracleClient.OracleCommand") { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/OracleDataClientDriver.cs b/src/NHibernate/Driver/OracleDataClientDriver.cs index 2e0524501ac..055242fd8a8 100644 --- a/src/NHibernate/Driver/OracleDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleDataClientDriver.cs @@ -51,6 +51,14 @@ public OracleDataClientDriver() oracleDbTypeXmlType = Enum.Parse(oracleDbTypeEnum, "XmlType"); } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + /// public override bool UseNamedPrefixInSql { diff --git a/src/NHibernate/Driver/OracleLiteDataClientDriver.cs b/src/NHibernate/Driver/OracleLiteDataClientDriver.cs index af7218bd996..bda688ffd91 100644 --- a/src/NHibernate/Driver/OracleLiteDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleLiteDataClientDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Data; using NHibernate.AdoNet; using NHibernate.SqlTypes; @@ -23,6 +24,14 @@ public OracleLiteDataClientDriver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/OracleManagedDataClientDriver.cs b/src/NHibernate/Driver/OracleManagedDataClientDriver.cs index 2f45e1ba401..6272d5ceb27 100644 --- a/src/NHibernate/Driver/OracleManagedDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleManagedDataClientDriver.cs @@ -48,6 +48,14 @@ public OracleManagedDataClientDriver() oracleDbTypeBlob = Enum.Parse(oracleDbTypeEnum, "Blob"); } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + /// public override string NamedPrefix { diff --git a/src/NHibernate/Driver/SqlClientDriver.cs b/src/NHibernate/Driver/SqlClientDriver.cs index d686162ad67..1994b444a3b 100644 --- a/src/NHibernate/Driver/SqlClientDriver.cs +++ b/src/NHibernate/Driver/SqlClientDriver.cs @@ -1,3 +1,4 @@ +using System; using System.Data; using System.Data.SqlClient; using NHibernate.AdoNet; @@ -23,6 +24,17 @@ public class SqlClientDriver : DriverBase, IEmbeddedBatcherFactoryProvider public const byte MaxDateTime2 = 8; public const byte MaxDateTimeOffset = 10; + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + if (handler is SqlInfoMessageEventHandler) + { + (con as SqlConnection).InfoMessage += (SqlInfoMessageEventHandler) handler; + } + + base.AddNotificationHandler(con, handler); + } + /// /// Creates an uninitialized object for /// the SqlClientDriver. diff --git a/src/NHibernate/Driver/SqlServerCeDriver.cs b/src/NHibernate/Driver/SqlServerCeDriver.cs index f89ac6b1080..c6c161d6eb7 100644 --- a/src/NHibernate/Driver/SqlServerCeDriver.cs +++ b/src/NHibernate/Driver/SqlServerCeDriver.cs @@ -27,6 +27,14 @@ public SqlServerCeDriver() private bool prepareSql; private PropertyInfo dbParamSqlDbTypeProperty; + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override void Configure(IDictionary settings) { base.Configure(settings); diff --git a/src/NHibernate/Driver/SybaseAsaClientDriver.cs b/src/NHibernate/Driver/SybaseAsaClientDriver.cs index 8fa1cc42b58..462fb3c670d 100644 --- a/src/NHibernate/Driver/SybaseAsaClientDriver.cs +++ b/src/NHibernate/Driver/SybaseAsaClientDriver.cs @@ -1,4 +1,5 @@ using System; +using System.Data; namespace NHibernate.Driver { @@ -18,6 +19,14 @@ public SybaseAsaClientDriver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/SybaseAseClientDriver.cs b/src/NHibernate/Driver/SybaseAseClientDriver.cs index eb73208ec1f..0d291a8b52f 100644 --- a/src/NHibernate/Driver/SybaseAseClientDriver.cs +++ b/src/NHibernate/Driver/SybaseAseClientDriver.cs @@ -1,4 +1,5 @@ using System; +using System.Data; namespace NHibernate.Driver { @@ -17,7 +18,15 @@ public class SybaseAseClientDriver : ReflectionBasedDriver public SybaseAseClientDriver() : base("Sybase.AdoNet2.AseClient", "Sybase.Data.AseClient.AseConnection", "Sybase.Data.AseClient.AseCommand") { } - + + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override string NamedPrefix { get { return "@"; } diff --git a/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs b/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs index cdee436d7f0..b5cf194b505 100644 --- a/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs +++ b/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs @@ -1,4 +1,7 @@ -namespace NHibernate.Driver +using System; +using System.Data; + +namespace NHibernate.Driver { /// /// SQL Dialect for SQL Anywhere 12 - for the NHibernate 3.2.0 distribution @@ -41,6 +44,14 @@ public SybaseSQLAnywhereDotNet4Driver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs b/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs index 7ed68976583..a2ce809d1b0 100644 --- a/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs +++ b/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs @@ -1,4 +1,7 @@ -namespace NHibernate.Driver +using System; +using System.Data; + +namespace NHibernate.Driver { /// /// The SybaseSQLAnywhereDriver Driver provides a database driver for Sybase SQL Anywhere 10 and above @@ -16,6 +19,14 @@ public SybaseSQLAnywhereDriver() { } + public override void AddNotificationHandler(IDbConnection con, Delegate handler) + { + //NH-3724 + con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); + + base.AddNotificationHandler(con, handler); + } + public override bool UseNamedPrefixInSql { get { return true; } From 5e4346c5078b7003d4704ee509e44f04f1cc49ef Mon Sep 17 00:00:00 2001 From: Ricardo Peres Date: Tue, 21 Oct 2014 13:38:48 +0100 Subject: [PATCH 2/4] Small fixes: - Base driver throws exception if a handler is passed to it - Drivers for .NET BCL classes just cast parameters to the expected types and will throw an exception if the type is wrong --- src/NHibernate/Driver/DriverBase.cs | 5 ++++- src/NHibernate/Driver/OdbcDriver.cs | 5 +---- src/NHibernate/Driver/OleDbDriver.cs | 5 +---- src/NHibernate/Driver/SqlClientDriver.cs | 5 +---- 4 files changed, 7 insertions(+), 13 deletions(-) diff --git a/src/NHibernate/Driver/DriverBase.cs b/src/NHibernate/Driver/DriverBase.cs index d443bdacbda..e9a0ff2a80e 100644 --- a/src/NHibernate/Driver/DriverBase.cs +++ b/src/NHibernate/Driver/DriverBase.cs @@ -23,7 +23,10 @@ public abstract class DriverBase : IDriver, ISqlParameterFormatter public virtual void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 - //do nothing by default + if (handler != null) + { + throw new ArgumentException("Current driver does not support notifications"); + } } public virtual void Configure(IDictionary settings) diff --git a/src/NHibernate/Driver/OdbcDriver.cs b/src/NHibernate/Driver/OdbcDriver.cs index 03c9e2c9e1a..13aad5ca342 100644 --- a/src/NHibernate/Driver/OdbcDriver.cs +++ b/src/NHibernate/Driver/OdbcDriver.cs @@ -16,10 +16,7 @@ public class OdbcDriver : DriverBase public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 - if (handler is OdbcInfoMessageEventHandler) - { - (con as OdbcConnection).InfoMessage += (OdbcInfoMessageEventHandler)handler; - } + (con as OdbcConnection).InfoMessage += (OdbcInfoMessageEventHandler)handler; base.AddNotificationHandler(con, handler); } diff --git a/src/NHibernate/Driver/OleDbDriver.cs b/src/NHibernate/Driver/OleDbDriver.cs index 70312af2758..86c154041d4 100644 --- a/src/NHibernate/Driver/OleDbDriver.cs +++ b/src/NHibernate/Driver/OleDbDriver.cs @@ -19,10 +19,7 @@ public OleDbDriver() public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 - if (handler is OleDbInfoMessageEventHandler) - { - (con as OleDbConnection).InfoMessage += (OleDbInfoMessageEventHandler)handler; - } + (con as OleDbConnection).InfoMessage += (OleDbInfoMessageEventHandler)handler; base.AddNotificationHandler(con, handler); } diff --git a/src/NHibernate/Driver/SqlClientDriver.cs b/src/NHibernate/Driver/SqlClientDriver.cs index 1994b444a3b..4d30434a522 100644 --- a/src/NHibernate/Driver/SqlClientDriver.cs +++ b/src/NHibernate/Driver/SqlClientDriver.cs @@ -27,10 +27,7 @@ public class SqlClientDriver : DriverBase, IEmbeddedBatcherFactoryProvider public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 - if (handler is SqlInfoMessageEventHandler) - { - (con as SqlConnection).InfoMessage += (SqlInfoMessageEventHandler) handler; - } + (con as SqlConnection).InfoMessage += (SqlInfoMessageEventHandler) handler; base.AddNotificationHandler(con, handler); } From e407dc9df42100deb05ac24c92166cfd40586bd3 Mon Sep 17 00:00:00 2001 From: Ricardo Peres Date: Thu, 23 Oct 2014 08:20:25 +0100 Subject: [PATCH 3/4] Logic for InfoMessage event moved to DriverBase Exception is thrown if event is not found --- src/NHibernate/Driver/DB2400Driver.cs | 8 -------- src/NHibernate/Driver/DB2Driver.cs | 8 -------- src/NHibernate/Driver/DotConnectMySqlDriver.cs | 8 -------- src/NHibernate/Driver/DriverBase.cs | 9 ++++++++- src/NHibernate/Driver/FirebirdClientDriver.cs | 8 -------- src/NHibernate/Driver/IfxDriver.cs | 8 -------- src/NHibernate/Driver/IngresDriver.cs | 8 -------- src/NHibernate/Driver/MySqlDataDriver.cs | 8 -------- src/NHibernate/Driver/NpgsqlDriver.cs | 2 -- src/NHibernate/Driver/OdbcDriver.cs | 2 -- src/NHibernate/Driver/OleDbDriver.cs | 2 -- src/NHibernate/Driver/OracleClientDriver.cs | 8 -------- src/NHibernate/Driver/OracleDataClientDriver.cs | 8 -------- src/NHibernate/Driver/OracleLiteDataClientDriver.cs | 8 -------- src/NHibernate/Driver/OracleManagedDataClientDriver.cs | 8 -------- src/NHibernate/Driver/SqlClientDriver.cs | 2 -- src/NHibernate/Driver/SqlServerCeDriver.cs | 8 -------- src/NHibernate/Driver/SybaseAsaClientDriver.cs | 8 -------- src/NHibernate/Driver/SybaseAseClientDriver.cs | 8 -------- src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs | 8 -------- src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs | 8 -------- 21 files changed, 8 insertions(+), 137 deletions(-) diff --git a/src/NHibernate/Driver/DB2400Driver.cs b/src/NHibernate/Driver/DB2400Driver.cs index 28b133c4da7..1cb69f3b70c 100644 --- a/src/NHibernate/Driver/DB2400Driver.cs +++ b/src/NHibernate/Driver/DB2400Driver.cs @@ -21,14 +21,6 @@ public DB2400Driver() : base( { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/DB2Driver.cs b/src/NHibernate/Driver/DB2Driver.cs index 425a8b24c46..a7f69d6fc72 100644 --- a/src/NHibernate/Driver/DB2Driver.cs +++ b/src/NHibernate/Driver/DB2Driver.cs @@ -22,14 +22,6 @@ public DB2Driver() : base( { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/DotConnectMySqlDriver.cs b/src/NHibernate/Driver/DotConnectMySqlDriver.cs index 806bbee3b8c..639bde84b5a 100644 --- a/src/NHibernate/Driver/DotConnectMySqlDriver.cs +++ b/src/NHibernate/Driver/DotConnectMySqlDriver.cs @@ -31,14 +31,6 @@ public DotConnectMySqlDriver() : base( { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - /// /// Devart.Data.MySql uses named parameters in the sql. /// diff --git a/src/NHibernate/Driver/DriverBase.cs b/src/NHibernate/Driver/DriverBase.cs index e9a0ff2a80e..d67468f2fd1 100644 --- a/src/NHibernate/Driver/DriverBase.cs +++ b/src/NHibernate/Driver/DriverBase.cs @@ -25,7 +25,14 @@ public virtual void AddNotificationHandler(IDbConnection con, Delegate handler) //NH-3724 if (handler != null) { - throw new ArgumentException("Current driver does not support notifications"); + var prop = con.GetType().GetEvent("InfoMessage"); + + if (prop == null) + { + throw new NotSupportedException("Current driver does not support notifications"); + } + + prop.AddEventHandler(con, handler); } } diff --git a/src/NHibernate/Driver/FirebirdClientDriver.cs b/src/NHibernate/Driver/FirebirdClientDriver.cs index adfa303f52a..12a6d841909 100644 --- a/src/NHibernate/Driver/FirebirdClientDriver.cs +++ b/src/NHibernate/Driver/FirebirdClientDriver.cs @@ -36,14 +36,6 @@ public FirebirdClientDriver() { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/IfxDriver.cs b/src/NHibernate/Driver/IfxDriver.cs index fd012dc3d84..32a18f1d7c3 100644 --- a/src/NHibernate/Driver/IfxDriver.cs +++ b/src/NHibernate/Driver/IfxDriver.cs @@ -23,14 +23,6 @@ public IfxDriver() { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/IngresDriver.cs b/src/NHibernate/Driver/IngresDriver.cs index 81df0c0f0a9..82663e0ae7b 100644 --- a/src/NHibernate/Driver/IngresDriver.cs +++ b/src/NHibernate/Driver/IngresDriver.cs @@ -12,14 +12,6 @@ public class IngresDriver : ReflectionBasedDriver { public IngresDriver() : base("Ingres.Client", "Ingres.Client.IngresConnection", "Ingres.Client.IngresCommand") {} - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/MySqlDataDriver.cs b/src/NHibernate/Driver/MySqlDataDriver.cs index 224e342a43a..033d2636353 100644 --- a/src/NHibernate/Driver/MySqlDataDriver.cs +++ b/src/NHibernate/Driver/MySqlDataDriver.cs @@ -33,14 +33,6 @@ public MySqlDataDriver() : base( { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - /// /// MySql.Data uses named parameters in the sql. /// diff --git a/src/NHibernate/Driver/NpgsqlDriver.cs b/src/NHibernate/Driver/NpgsqlDriver.cs index 52c615b6a7f..bc018f2b8a4 100644 --- a/src/NHibernate/Driver/NpgsqlDriver.cs +++ b/src/NHibernate/Driver/NpgsqlDriver.cs @@ -44,8 +44,6 @@ public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 con.GetType().GetEvent("Notification").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); } public override bool UseNamedPrefixInSql diff --git a/src/NHibernate/Driver/OdbcDriver.cs b/src/NHibernate/Driver/OdbcDriver.cs index 13aad5ca342..2ca74be98cb 100644 --- a/src/NHibernate/Driver/OdbcDriver.cs +++ b/src/NHibernate/Driver/OdbcDriver.cs @@ -17,8 +17,6 @@ public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 (con as OdbcConnection).InfoMessage += (OdbcInfoMessageEventHandler)handler; - - base.AddNotificationHandler(con, handler); } public override IDbConnection CreateConnection() diff --git a/src/NHibernate/Driver/OleDbDriver.cs b/src/NHibernate/Driver/OleDbDriver.cs index 86c154041d4..e9431c7d1ab 100644 --- a/src/NHibernate/Driver/OleDbDriver.cs +++ b/src/NHibernate/Driver/OleDbDriver.cs @@ -20,8 +20,6 @@ public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 (con as OleDbConnection).InfoMessage += (OleDbInfoMessageEventHandler)handler; - - base.AddNotificationHandler(con, handler); } public override IDbConnection CreateConnection() diff --git a/src/NHibernate/Driver/OracleClientDriver.cs b/src/NHibernate/Driver/OracleClientDriver.cs index 89a49561aa2..7863326beed 100644 --- a/src/NHibernate/Driver/OracleClientDriver.cs +++ b/src/NHibernate/Driver/OracleClientDriver.cs @@ -19,14 +19,6 @@ public OracleClientDriver() : "System.Data.OracleClient.OracleConnection", "System.Data.OracleClient.OracleCommand") { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/OracleDataClientDriver.cs b/src/NHibernate/Driver/OracleDataClientDriver.cs index 055242fd8a8..2e0524501ac 100644 --- a/src/NHibernate/Driver/OracleDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleDataClientDriver.cs @@ -51,14 +51,6 @@ public OracleDataClientDriver() oracleDbTypeXmlType = Enum.Parse(oracleDbTypeEnum, "XmlType"); } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - /// public override bool UseNamedPrefixInSql { diff --git a/src/NHibernate/Driver/OracleLiteDataClientDriver.cs b/src/NHibernate/Driver/OracleLiteDataClientDriver.cs index bda688ffd91..6d4dea627bd 100644 --- a/src/NHibernate/Driver/OracleLiteDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleLiteDataClientDriver.cs @@ -24,14 +24,6 @@ public OracleLiteDataClientDriver() { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/OracleManagedDataClientDriver.cs b/src/NHibernate/Driver/OracleManagedDataClientDriver.cs index 6272d5ceb27..2f45e1ba401 100644 --- a/src/NHibernate/Driver/OracleManagedDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleManagedDataClientDriver.cs @@ -48,14 +48,6 @@ public OracleManagedDataClientDriver() oracleDbTypeBlob = Enum.Parse(oracleDbTypeEnum, "Blob"); } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - /// public override string NamedPrefix { diff --git a/src/NHibernate/Driver/SqlClientDriver.cs b/src/NHibernate/Driver/SqlClientDriver.cs index 4d30434a522..744ed190a90 100644 --- a/src/NHibernate/Driver/SqlClientDriver.cs +++ b/src/NHibernate/Driver/SqlClientDriver.cs @@ -28,8 +28,6 @@ public override void AddNotificationHandler(IDbConnection con, Delegate handler) { //NH-3724 (con as SqlConnection).InfoMessage += (SqlInfoMessageEventHandler) handler; - - base.AddNotificationHandler(con, handler); } /// diff --git a/src/NHibernate/Driver/SqlServerCeDriver.cs b/src/NHibernate/Driver/SqlServerCeDriver.cs index c6c161d6eb7..f89ac6b1080 100644 --- a/src/NHibernate/Driver/SqlServerCeDriver.cs +++ b/src/NHibernate/Driver/SqlServerCeDriver.cs @@ -27,14 +27,6 @@ public SqlServerCeDriver() private bool prepareSql; private PropertyInfo dbParamSqlDbTypeProperty; - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override void Configure(IDictionary settings) { base.Configure(settings); diff --git a/src/NHibernate/Driver/SybaseAsaClientDriver.cs b/src/NHibernate/Driver/SybaseAsaClientDriver.cs index 462fb3c670d..079b01f4c50 100644 --- a/src/NHibernate/Driver/SybaseAsaClientDriver.cs +++ b/src/NHibernate/Driver/SybaseAsaClientDriver.cs @@ -19,14 +19,6 @@ public SybaseAsaClientDriver() { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return false; } diff --git a/src/NHibernate/Driver/SybaseAseClientDriver.cs b/src/NHibernate/Driver/SybaseAseClientDriver.cs index 0d291a8b52f..be08acdb4e2 100644 --- a/src/NHibernate/Driver/SybaseAseClientDriver.cs +++ b/src/NHibernate/Driver/SybaseAseClientDriver.cs @@ -19,14 +19,6 @@ public SybaseAseClientDriver() : base("Sybase.AdoNet2.AseClient", "Sybase.Data.A { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override string NamedPrefix { get { return "@"; } diff --git a/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs b/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs index b5cf194b505..5a13ba17dcd 100644 --- a/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs +++ b/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs @@ -44,14 +44,6 @@ public SybaseSQLAnywhereDotNet4Driver() { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return true; } diff --git a/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs b/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs index a2ce809d1b0..16d258a20eb 100644 --- a/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs +++ b/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs @@ -19,14 +19,6 @@ public SybaseSQLAnywhereDriver() { } - public override void AddNotificationHandler(IDbConnection con, Delegate handler) - { - //NH-3724 - con.GetType().GetEvent("InfoMessage").AddEventHandler(con, handler); - - base.AddNotificationHandler(con, handler); - } - public override bool UseNamedPrefixInSql { get { return true; } From 2e7cc0736bc2b4fb30db3712e62536d52527eb2c Mon Sep 17 00:00:00 2001 From: Ricardo Peres Date: Thu, 23 Oct 2014 11:59:10 +0100 Subject: [PATCH 4/4] Applied suggested fixes: removed unnecessary using directives and added . at the end of the exception message --- src/NHibernate/Driver/DB2400Driver.cs | 1 - src/NHibernate/Driver/DB2Driver.cs | 1 - .../Driver/DotConnectMySqlDriver.cs | 5 +- src/NHibernate/Driver/DriverBase.cs | 2 +- src/NHibernate/Driver/FirebirdClientDriver.cs | 1 - src/NHibernate/Driver/IngresDriver.cs | 1 - src/NHibernate/Driver/MySqlDataDriver.cs | 3 - src/NHibernate/Driver/OracleClientDriver.cs | 1 - .../Driver/OracleLiteDataClientDriver.cs | 1 - src/NHibernate/Driver/SQLite20Driver.cs | 111 +++++++++--------- src/NHibernate/Driver/SqlServerCeDriver.cs | 1 - .../Driver/SybaseAsaClientDriver.cs | 1 - .../Driver/SybaseAseClientDriver.cs | 5 +- .../Driver/SybaseSQLAnywhereDotNet4Driver.cs | 5 +- .../Driver/SybaseSQLAnywhereDriver.cs | 5 +- 15 files changed, 60 insertions(+), 84 deletions(-) diff --git a/src/NHibernate/Driver/DB2400Driver.cs b/src/NHibernate/Driver/DB2400Driver.cs index 1cb69f3b70c..c2c128bc68d 100644 --- a/src/NHibernate/Driver/DB2400Driver.cs +++ b/src/NHibernate/Driver/DB2400Driver.cs @@ -1,5 +1,4 @@ using System; -using System.Data; namespace NHibernate.Driver { diff --git a/src/NHibernate/Driver/DB2Driver.cs b/src/NHibernate/Driver/DB2Driver.cs index a7f69d6fc72..93c1b26bd1f 100644 --- a/src/NHibernate/Driver/DB2Driver.cs +++ b/src/NHibernate/Driver/DB2Driver.cs @@ -1,5 +1,4 @@ using System; -using System.Data; namespace NHibernate.Driver { diff --git a/src/NHibernate/Driver/DotConnectMySqlDriver.cs b/src/NHibernate/Driver/DotConnectMySqlDriver.cs index 639bde84b5a..1aff3e20fb7 100644 --- a/src/NHibernate/Driver/DotConnectMySqlDriver.cs +++ b/src/NHibernate/Driver/DotConnectMySqlDriver.cs @@ -1,7 +1,4 @@ -using System; -using System.Data; - -namespace NHibernate.Driver +namespace NHibernate.Driver { /// /// Provides a database driver for dotConnect for MySQL by DevArt. diff --git a/src/NHibernate/Driver/DriverBase.cs b/src/NHibernate/Driver/DriverBase.cs index d67468f2fd1..756812ae0fb 100644 --- a/src/NHibernate/Driver/DriverBase.cs +++ b/src/NHibernate/Driver/DriverBase.cs @@ -29,7 +29,7 @@ public virtual void AddNotificationHandler(IDbConnection con, Delegate handler) if (prop == null) { - throw new NotSupportedException("Current driver does not support notifications"); + throw new NotSupportedException("Current driver does not support notifications."); } prop.AddEventHandler(con, handler); diff --git a/src/NHibernate/Driver/FirebirdClientDriver.cs b/src/NHibernate/Driver/FirebirdClientDriver.cs index 12a6d841909..0543b77bac2 100644 --- a/src/NHibernate/Driver/FirebirdClientDriver.cs +++ b/src/NHibernate/Driver/FirebirdClientDriver.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Data; using System.Linq; diff --git a/src/NHibernate/Driver/IngresDriver.cs b/src/NHibernate/Driver/IngresDriver.cs index 82663e0ae7b..a82932bd1ab 100644 --- a/src/NHibernate/Driver/IngresDriver.cs +++ b/src/NHibernate/Driver/IngresDriver.cs @@ -1,5 +1,4 @@ using System; -using System.Data; namespace NHibernate.Driver { diff --git a/src/NHibernate/Driver/MySqlDataDriver.cs b/src/NHibernate/Driver/MySqlDataDriver.cs index 033d2636353..85c71a70bf5 100644 --- a/src/NHibernate/Driver/MySqlDataDriver.cs +++ b/src/NHibernate/Driver/MySqlDataDriver.cs @@ -1,6 +1,3 @@ -using System; -using System.Data; - namespace NHibernate.Driver { /// diff --git a/src/NHibernate/Driver/OracleClientDriver.cs b/src/NHibernate/Driver/OracleClientDriver.cs index 7863326beed..f93b848b1eb 100644 --- a/src/NHibernate/Driver/OracleClientDriver.cs +++ b/src/NHibernate/Driver/OracleClientDriver.cs @@ -1,4 +1,3 @@ -using System; using System.Data; using NHibernate.Engine.Query; using NHibernate.SqlTypes; diff --git a/src/NHibernate/Driver/OracleLiteDataClientDriver.cs b/src/NHibernate/Driver/OracleLiteDataClientDriver.cs index 6d4dea627bd..af7218bd996 100644 --- a/src/NHibernate/Driver/OracleLiteDataClientDriver.cs +++ b/src/NHibernate/Driver/OracleLiteDataClientDriver.cs @@ -1,4 +1,3 @@ -using System; using System.Data; using NHibernate.AdoNet; using NHibernate.SqlTypes; diff --git a/src/NHibernate/Driver/SQLite20Driver.cs b/src/NHibernate/Driver/SQLite20Driver.cs index ed32b2c891f..580699db6a5 100644 --- a/src/NHibernate/Driver/SQLite20Driver.cs +++ b/src/NHibernate/Driver/SQLite20Driver.cs @@ -1,39 +1,38 @@ -using System; using System.Data; using System.Data.Common; namespace NHibernate.Driver { - /// - /// NHibernate driver for the System.Data.SQLite data provider for .NET 2.0. - /// - /// - ///

- /// In order to use this driver you must have the System.Data.SQLite.dll assembly available - /// for NHibernate to load. This assembly includes the SQLite.dll or SQLite3.dll libraries. - ///

- ///

- /// You can get the System.Data.SQLite.dll assembly from http://sourceforge.net/projects/sqlite-dotnet2. - ///

- ///

- /// Please check http://www.sqlite.org/ for more information regarding SQLite. - ///

- ///
- public class SQLite20Driver : ReflectionBasedDriver - { - /// - /// 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") - { - } + /// + /// NHibernate driver for the System.Data.SQLite data provider for .NET 2.0. + /// + /// + ///

+ /// In order to use this driver you must have the System.Data.SQLite.dll assembly available + /// for NHibernate to load. This assembly includes the SQLite.dll or SQLite3.dll libraries. + ///

+ ///

+ /// You can get the System.Data.SQLite.dll assembly from http://sourceforge.net/projects/sqlite-dotnet2. + ///

+ ///

+ /// Please check http://www.sqlite.org/ for more information regarding SQLite. + ///

+ ///
+ public class SQLite20Driver : ReflectionBasedDriver + { + /// + /// 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 override IDbConnection CreateConnection() { @@ -57,34 +56,34 @@ private static void Connection_StateChange(object sender, StateChangeEventArgs e } } - public override bool UseNamedPrefixInSql - { - get { return true; } - } + public override bool UseNamedPrefixInSql + { + get { return true; } + } - public override bool UseNamedPrefixInParameter - { - get { return true; } - } + public override bool UseNamedPrefixInParameter + { + get { return true; } + } - public override string NamedPrefix - { - get { return "@"; } - } + public override string NamedPrefix + { + get { return "@"; } + } - public override bool SupportsMultipleOpenReaders - { - get { return false; } - } + public override bool SupportsMultipleOpenReaders + { + get { return false; } + } - public override IResultSetsCommand GetResultSetsCommand(Engine.ISessionImplementor session) - { - return new BasicResultSetsCommand(session); - } + public override IResultSetsCommand GetResultSetsCommand(Engine.ISessionImplementor session) + { + return new BasicResultSetsCommand(session); + } - public override bool SupportsMultipleQueries - { - get { return true; } - } - } + public override bool SupportsMultipleQueries + { + get { return true; } + } + } } \ No newline at end of file diff --git a/src/NHibernate/Driver/SqlServerCeDriver.cs b/src/NHibernate/Driver/SqlServerCeDriver.cs index f89ac6b1080..f77074f6dec 100644 --- a/src/NHibernate/Driver/SqlServerCeDriver.cs +++ b/src/NHibernate/Driver/SqlServerCeDriver.cs @@ -1,4 +1,3 @@ -using System; using System.Collections.Generic; using System.Data; using System.Reflection; diff --git a/src/NHibernate/Driver/SybaseAsaClientDriver.cs b/src/NHibernate/Driver/SybaseAsaClientDriver.cs index 079b01f4c50..8fa1cc42b58 100644 --- a/src/NHibernate/Driver/SybaseAsaClientDriver.cs +++ b/src/NHibernate/Driver/SybaseAsaClientDriver.cs @@ -1,5 +1,4 @@ using System; -using System.Data; namespace NHibernate.Driver { diff --git a/src/NHibernate/Driver/SybaseAseClientDriver.cs b/src/NHibernate/Driver/SybaseAseClientDriver.cs index be08acdb4e2..20d4acab372 100644 --- a/src/NHibernate/Driver/SybaseAseClientDriver.cs +++ b/src/NHibernate/Driver/SybaseAseClientDriver.cs @@ -1,7 +1,4 @@ -using System; -using System.Data; - -namespace NHibernate.Driver +namespace NHibernate.Driver { /// /// This provides a driver for Sybase ASE 15 using the ADO.NET driver. diff --git a/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs b/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs index 5a13ba17dcd..cdee436d7f0 100644 --- a/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs +++ b/src/NHibernate/Driver/SybaseSQLAnywhereDotNet4Driver.cs @@ -1,7 +1,4 @@ -using System; -using System.Data; - -namespace NHibernate.Driver +namespace NHibernate.Driver { /// /// SQL Dialect for SQL Anywhere 12 - for the NHibernate 3.2.0 distribution diff --git a/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs b/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs index 16d258a20eb..7ed68976583 100644 --- a/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs +++ b/src/NHibernate/Driver/SybaseSQLAnywhereDriver.cs @@ -1,7 +1,4 @@ -using System; -using System.Data; - -namespace NHibernate.Driver +namespace NHibernate.Driver { /// /// The SybaseSQLAnywhereDriver Driver provides a database driver for Sybase SQL Anywhere 10 and above