4
我一直在嘗試與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」值調用