2012-02-22 113 views
0

我的解決方案,我有以下項目映射SQL視圖與NHibernate和外鍵

MySystem.Core 
MySystem.Core.Data 

MySystem.MyAudit1.Core 
MySystem.MyAudit1.Core.Data 

MySystem.MyAudit2.Core 
MySystem.MyAudit2.Core.Data 

審計項目的數量可能會增長到20左右

的審計項目都需要一個「組織「參考數據表。我的計劃是在Core項目中創建一個「主」組織表,而不是在所有審計項目中重複20次同一個參考數據表並儘量保持同步。

這將包含所有組織的代碼和說明。然後,在每個特定的審計項目都僅包含相關的審計,但沒有說明該組織代碼的OrganisationCode表,並在審覈數據庫從核心組織的表中查找說明一個觀點如下:

CREATE VIEW Organisation AS 
SELECT d.OrganisationCodeId as 'OrganisationId', d.Code, a.[Description] 
FROM MyAudit1.dbo.OrganisationCode d 
INNER JOIN [Core].dbo.OrganisationCode a ON d.Code = a.Code 

這將意味着,如果組織的描述改變他們可以在一個地方進行更新,並在所有審計反映出來。

但是,因爲你不能對SQL中查看外鍵我已經建立了審計數據庫中的表OrganisationCode和取其他表之間的外鍵需要它們。

正如我發現,這當然會導致NHibernate的嘗試,並返回OrganisationCode ,而不是組織視圖,並導致我的SessionFactory創建摔倒例如NHibernate在OrganisationCode表尋找OrganisationId。

有一個簡單的辦法解決這將讓我有參考數據的核心項目,可在孩子使用單一描述查找技術項目

+0

是否遍佈多個數據庫的審計表? – Firo 2012-02-23 10:43:03

回答

0

是審計表分佈在不同的DBS,但我已經到了我的問題的路線。

我的SessionFactory創建失敗的原因是配置正在傳遞審計數據程序集進行映射,而我的組織映射文件位於核心數據程序集中。

既然我已經通過在審計數據程序集中添加組織映射文件來解決這個問題,那麼我的信任對象將從組織視圖中返回描述值。

感謝您的期待。