2011-03-10 88 views
2

簡而言之:我如何獲得映射到我的實體的所有表名的列表?如何獲得我所有的實體映射表的列表?

爲什麼: 我們有一套由NHibernate支持的WCF Web服務,通​​過FluentNHibernate進行映射。我們在我們的架構中構建了一個簡單而強大的健康檢查功能我們可以調用一個安全的Diagnose()服務操作,它會向我們的Windsor容器詢問IHealthCheck界面的所有已註冊實例。我們有一些這個接口的具體實現,用於檢查我們產品的安裝狀態 - 例如數據庫連接,種子數據,向下字符串服務連接等。

我們已經構建了一些檢查我們的NHibernate代碼的健康。例如,我們借用Ayende的[1]代碼來查詢每個映射。我想對我們用於NHibernate的自定義KeyGenerator實現進行檢查。我們有一個表格,在我們的數據庫中每個表格存儲一行。我們的HILO算法使用該表執行密鑰生成。所以,我想寫一個檢查來確認SessionFactory中的每個映射實體在該表中都有一行代表實體支持表。

任何指針,將不勝感激。 session.SessionFactory.GetAllClassMetadata()聞起來很有希望,但我看不到我正在尋找的東西。

乾杯。

[1] http://ayende.com/Blog/archive/2006/08/09/NHibernateMappingCreatingSanityChecks.aspx

回答

5

我已經通過保持到NHibernate.Cfg.Configuration我用它來建立與SessionFactory的引用做同樣的事情。

它有一個ClassMappings集合,其中包含每個實體的PersistentClass對象。 PersistentClass.Table.Name屬性應該是您正在查找的內容。

+0

確切地說,不要忘記PersistentClass.Table.Schema – Jaguar 2011-03-10 09:16:10

相關問題