protected virtual void CreateTemporaryTableIfNecessary(IQueryable persister, ISessionImplementor session) { // Don't really know all the codes required to adequately decipher returned ADO exceptions here. // simply allow the failure to be eaten and the subsequent insert-selects/deletes should fail IIsolatedWork work = new TmpIdTableCreationIsolatedWork(persister, log, session); if (ShouldIsolateTemporaryTableDDL()) { if (Factory.Settings.IsDataDefinitionInTransactionSupported) { Isolater.DoIsolatedWork(work, session); } else { Isolater.DoNonTransactedWork(work, session); } } else { using (var dummyCommand = session.ConnectionManager.CreateCommand()) { work.DoWork(dummyCommand.Connection, dummyCommand.Transaction); session.ConnectionManager.AfterStatement(); } } }
protected virtual async Task CreateTemporaryTableIfNecessaryAsync(IQueryable persister, ISessionImplementor session, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); // Don't really know all the codes required to adequately decipher returned ADO exceptions here. // simply allow the failure to be eaten and the subsequent insert-selects/deletes should fail IIsolatedWork work = new TmpIdTableCreationIsolatedWork(persister, log, session); if (ShouldIsolateTemporaryTableDDL()) { if (Factory.Settings.IsDataDefinitionInTransactionSupported) { await(Isolater.DoIsolatedWorkAsync(work, session, cancellationToken)).ConfigureAwait(false); } else { await(Isolater.DoNonTransactedWorkAsync(work, session, cancellationToken)).ConfigureAwait(false); } } else { using (var dummyCommand = await(session.ConnectionManager.CreateCommandAsync(cancellationToken)).ConfigureAwait(false)) { await(work.DoWorkAsync(dummyCommand.Connection, dummyCommand.Transaction, cancellationToken)).ConfigureAwait(false); session.ConnectionManager.AfterStatement(); } } }
protected virtual void CreateTemporaryTableIfNecessary(IQueryable persister, ISessionImplementor session) { // Don't really know all the codes required to adequately decipher returned ADO exceptions here. // simply allow the failure to be eaten and the subsequent insert-selects/deletes should fail IIsolatedWork work = new TmpIdTableCreationIsolatedWork(persister, log, session); if (ShouldIsolateTemporaryTableDDL()) { if (Factory.Settings.IsDataDefinitionInTransactionSupported) { Isolater.DoIsolatedWork(work, session); } else { Isolater.DoNonTransactedWork(work, session); } } else { work.DoWork(session.ConnectionManager.GetConnection(), null); session.ConnectionManager.AfterStatement(); } }