1
我們使用的是NHibernate 3.2。Nhibernate - 對特定的ISession或ISessionFactory使用日誌記錄
我想能夠記錄來自特定ISession的SQL查詢。那可能嗎?
另外,如果這是不可能的,我可以設置一個記錄器到一個特定的ISessionFactory?然後我可以從這個特定的工廠創建這個ISession。
從我所看到的,要設置記錄器,你必須做這樣的事情:
<appSettings>
<add key="nhibernate-logger" value="NH3SQLLogger.LoggerFactory, NH3SQLLogger" />
</appSettings>
然而,這將使全球設置爲所有的工廠。
我可以做這樣的事情:
var config = new Configuration();
config.Configure();
config.SetProperty("nhibernate-logger",
"NH3SQLLogger.LoggerFactory, NH3SQLLogger");
_sessionFactory = config.BuildSessionFactory();
將這項工作?還是有另一種方式?
謝謝你的詳細解答,蘭迪。然而,我對這個解決方案有點謹慎,因爲這意味着這個記錄器將會在系統中的每個會話中執行,這將導致全局性能下降。是否沒有其他方式(例如沒有記錄)從特定會話中獲取完整的SQL? – VitalyB
另外,如果你可以請看看這個,後續問題:http://stackoverflow.com/questions/15700406/getting-building-the-sql-with-parameters-from-nhibernate-3-2謝謝! – VitalyB
@VitalyB不幸的是,我不知道有任何其他方式可以訪問完整的SQL查詢字符串和參數。是的,創建一個客戶ILoggerFactory將導致某種性能下降。我也看了你的後續問題,但我沒有其他任何貢獻,因爲我從來不需要做任何事情。祝你好運! –