2010-08-10 30 views
0

映射接合表我有以下表:NHibernate的 - 複合實體,由另一實體

A 
-- 
Id : int 
SomeString : varchar(20) 

B 
-- 
Id : int 
BString: nvarchar(10) 
AId : int // FK to A 

我有已被映射到表A.

對於實體B的實體A,我試圖做一個複合,這樣我就得到了B中的所有數據,以及A中的字段.A中的字段不應該通過B變長,它們只是用於用例。

我試圖建立對於B我(流利)映射,像這樣:

Table("B"); 
    Join(
    "A" 
    m => 
     { 
     m.KeyColumn("AId"); 
     m.Inverse(); 
     m.Map(p => p.SomeString); 
     } 
); 
    Map(p => p.BString); 

,當我嘗試導出模式時發生的問題;它說表A已經存在。任何想法,或者根本不工作?

謝謝

回答

2

這是一個壞主意。您應該參考A.

如果您不想從B的引用中更改A,只需將其設置爲私有並僅爲其屬性公開getter。

+0

這就是我最終做的。 我不明白爲什麼這是一個壞主意(除了看起來NHibernate似乎沒有讓你這樣做)。加入表格並在連接映射中只讀設置這些特徵並不會造成概念性問題,也不需要加載另一個相當複雜的模型來獲得一些屬性。在我們的例子中,這個其他模型不能是私有的,因爲我們使用Fluent來完成我們的映射。 – Andy 2010-08-11 15:13:22