Я пытался использовать временные таблицы вместе с nhibernate.Почему временные таблицы не работают в 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», который я использовал в своей конфигурации, это вызвать