2010-09-10 73 views
0

我有以下兩個表:NHibernate的 - 如何假一側的許多一對多正常化

Package 
id 

ClientPackage 
id 
clientNumber 
packageId 

的事情是,我沒有一個客戶表在此數據庫(它駐留在另一個數據庫中)。有沒有一種方法可以創建客戶端映射到客戶端模型,該模型僅由ClientPackage表中的不同「clientNumber」組成,同時將ClientPackage視爲關聯表 - 這意味着我不需要ClientPackage的類或映射。我在想,我可以使用一個組件和一個idbag來實現這一點,但我只是想要一個更有經驗的意見,以便我知道我做的是正確的事情。

回答

1

從NH的角度來看,這不是一個多對多的關係,正是因爲客戶端沒有被映射。

該映射取決於您希望如何在域模型中表示它。

idbag可以正常工作,將Package.Clients映射爲ICollection<int>。您不需要組件:

<idbag name="Clients" table="ClientPackage"> 
    <collection-id column="id" type="..."> 
    <generator class="..."/> 
    </collection-id> 
    <key column="packageId"/> 
    <element column="clientNumber"/> 
</idbag> 

然後您將使用這些ID來獲取其他數據庫中的客戶端。