如果使用INSERT查詢添加對象的狀態是什麼?而我怎麼能得到這個對象相同的會話?使用本地SQL在NHibernate中對INSERT查詢使用CreateSQLQuery
session.CreateSQLQuery("INSERT INTO table (...) VALUES (...)").ExecuteUpdate())
我知道他的身份證,因此採用這種對於GET
插入對象:
sessison.Get<MyObjectType>(id)
,但對象是空的,因爲會議是相同的,並承諾仍懸而未決。 我在做什麼錯?
P.S.使用CreateSQLQuery需要,因爲我的子對象foo基於他的父欄創建,但bar和foo具有相同的ID,並且使用了Table Per Concrete Class
這對我來說不正常。在原始SQL級別,我們可以讀取任何隔離級別的未提交數據,只要我們正在讀取具有待處理數據的事務。檢查'ExecuteUpdate',它應該立即發送查詢到數據庫。你可以檢查你的情況與分析器?然後'Get'應該能夠找到你的新實體,除非你在某些特定情況下,比如在會話中有一個陳舊的實體具有相同的Id,但標記爲刪除。啓用NHibernate調試log4net日誌,並從'DefaultLoadEventListener'的日誌應該給你詳細信息。 –
不,在ExecuteUpdate之後,分析器說,我',只是發送插入,但沒有提交。我認爲這取決於ISessionProvider生活方式 –
只是發送插入是我期望在分析器中看到的。無論如何,你的評論[這裏](/ questions/36386613/using-creatingqlquery-with-insert-query-in-nhibernate?noredirect = 1#comment60434278_36388601)告訴你已經找到了一些東西,你應該添加它作爲你自己的答案問題,並接受它。或者,如果您不明白爲什麼您的更改會導致您的代碼正常工作,那麼也許您應該提出一個新問題。 –