SqlClientBatchingBatcher doesn't work with MicrosoftDataSqlClientDriver #3258
-
When using the There's specificaly code that expects that the SqlCommand will be Is there some way to work around this? Can this be fixed, please? Specific line: https://github.com/nhibernate/nhibernate-core/blob/master/src/NHibernate/AdoNet/SqlClientBatchingBatcher.cs#L67 See public override void AddToBatch(IExpectation expectation)
{
_totalExpectedRowsAffected += expectation.ExpectedRowCount;
var batchUpdate = CurrentCommand;
Driver.AdjustCommand(batchUpdate);
string lineWithParameters = null;
var sqlStatementLogger = Factory.Settings.SqlStatementLogger;
if (sqlStatementLogger.IsDebugEnabled || Log.IsDebugEnabled())
{
lineWithParameters = sqlStatementLogger.GetCommandLineWithParameters(batchUpdate);
var formatStyle = sqlStatementLogger.DetermineActualStyle(FormatStyle.Basic);
lineWithParameters = formatStyle.Formatter.Format(lineWithParameters);
_currentBatchCommandsLog.Append("command ")
.Append(_currentBatch.CountOfCommands)
.Append(":")
.AppendLine(lineWithParameters);
}
if (Log.IsDebugEnabled())
{
Log.Debug("Adding to batch:{0}", lineWithParameters);
}
_currentBatch.Append((System.Data.SqlClient.SqlCommand) Driver.UnwrapDbCommand(batchUpdate));
if (_currentBatch.CountOfCommands >= _batchSize)
{
ExecuteBatchWithTiming(batchUpdate);
}
} |
Beta Was this translation helpful? Give feedback.
Replies: 2 comments 7 replies
-
This batcher is implemented through an internal batcher provided by For |
Beta Was this translation helpful? Give feedback.
-
I think it's possible to create a new Why do you think it cannot work? Should I prepare a PR to demonstrate?
I'm in the process of migrating a big application from |
Beta Was this translation helpful? Give feedback.
SqlClientBatchingBatcher
usesSystem.Data.SqlClient
, it cannot work withMicrosoft.Data.SqlClient
.This batcher is implemented through an internal batcher provided by
System.Data.SqlClient
, see here.For
Microsoft.Data.SqlClient
, use the generic batching batcher. (Just leave it un-configured, the driver will use it by default, see here.)