Я пытался использовать временные таблицы вместе с nhibernate.
Следующий фрагмент кода не работает
query = @"CREATE TABLE [#Dataset_x]
([Name] [nvarchar](max) NULL,
[Value] [nvarchar](max) NULL )";
Session.CreateSQLQuery(query).SetTimeout(uploadExecQueryTimeout).ExecuteUpdate();
query = @"INSERT INTO [#Dataset_x] ([Name],[Value]) VALUES('Dataset','MyDataset')";
Session.CreateSQLQuery(query).SetTimeout(uploadExecQueryTimeout).ExecuteUpdate();
И я получаю ошибку объекта недопустимую при попыткеВыполните второй запрос (потому что временная таблица, которая была создана, истекла, прежде чем я вызвал во втором запросе).
Однако, если я добавлю вышеупомянутый кусок кода в транзакцию, как показано ниже, она прекрасно работает.
using (var transaction = Session.BeginTransaction())
{
query = @"CREATE TABLE [#Dataset_x]
([Name] [nvarchar](max) NULL,
[Value] [nvarchar](max) NULL )";
Session.CreateSQLQuery(query).SetTimeout(uploadExecQueryTimeout).ExecuteUpdate();
query = @"INSERT INTO [#Dataset_x] ([Name],[Value]) VALUES('Dataset','MyDataset')";
Session.CreateSQLQuery(query).SetTimeout(uploadExecQueryTimeout).ExecuteUpdate();
transaction.Commit();
}
Может кто-нибудь подсказать мне, почему транзакции требуются для использования временных таблиц в nhibernate?
Примечание: значение «current_session_context_class», которое я использовал в моей конфигурации, это вызов