From adf1f012faf9d3318b61097a11a0c4d90f3c071f Mon Sep 17 00:00:00 2001 From: David Ellingsworth Date: Tue, 11 Jun 2024 09:14:30 -0400 Subject: [PATCH] GH-3530: The Sql Server 2008 driver lacks support for the DbDataReader.GetChar method, wrap it in a NoCharDbDataReader. --- .../Async/Driver/Sql2008ClientDriver.cs | 37 +++++++++++++++++++ src/NHibernate/Driver/Sql2008ClientDriver.cs | 10 ++++- 2 files changed, 46 insertions(+), 1 deletion(-) create mode 100644 src/NHibernate/Async/Driver/Sql2008ClientDriver.cs diff --git a/src/NHibernate/Async/Driver/Sql2008ClientDriver.cs b/src/NHibernate/Async/Driver/Sql2008ClientDriver.cs new file mode 100644 index 00000000000..d714784b8c3 --- /dev/null +++ b/src/NHibernate/Async/Driver/Sql2008ClientDriver.cs @@ -0,0 +1,37 @@ +//------------------------------------------------------------------------------ +// +// 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.Util; +using NHibernate.AdoNet; + +namespace NHibernate.Driver +{ + using System.Threading.Tasks; + using System.Threading; + public partial class Sql2008ClientDriver : SqlClientDriver + { + + #if NETFX + #else + + #endif + + public override async Task ExecuteReaderAsync(DbCommand command, CancellationToken cancellationToken) + { + cancellationToken.ThrowIfCancellationRequested(); + var reader = await (command.ExecuteReaderAsync(cancellationToken)).ConfigureAwait(false); + + return new NoCharDbDataReader(reader); + } + } +} diff --git a/src/NHibernate/Driver/Sql2008ClientDriver.cs b/src/NHibernate/Driver/Sql2008ClientDriver.cs index 0068832139f..6255f12ffef 100644 --- a/src/NHibernate/Driver/Sql2008ClientDriver.cs +++ b/src/NHibernate/Driver/Sql2008ClientDriver.cs @@ -2,10 +2,11 @@ using System.Data; using System.Data.Common; using NHibernate.Util; +using NHibernate.AdoNet; namespace NHibernate.Driver { - public class Sql2008ClientDriver : SqlClientDriver + public partial class Sql2008ClientDriver : SqlClientDriver { const byte MaxTime = 5; @@ -34,5 +35,12 @@ protected override void InitializeParameter(DbParameter dbParam, string name, Sq /// public override DateTime MinDate => DateTime.MinValue; + + public override DbDataReader ExecuteReader(DbCommand command) + { + var reader = command.ExecuteReader(); + + return new NoCharDbDataReader(reader); + } } }