2011-06-29 79 views
0

我有這個數據庫架構(MS SQL 2008):NHibernate的模型映射

 
Shops 
    ID int (PK) 
    Name nvarchar(200) 

Suppliers 
    ID int (PK) 
    ShopID int (FK->Shops.ID) 
    Name nvarchar(200) 

Contacts 
    ID int (PK) 
    SupplierID int (FK->Suppliers.ID) 
    Phone nvarchar(100) 

我在我的項目中的這些機型:

public class Shop 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public IList<SupplierContact> SupplierContacts { get; set; } 
} 

public class SupplierContact 
{ 
    public int Id { get; set; } 
    public string Phone { get; set; } 
} 

我映射文件發揮各地加載我Shop模型但沒有運氣。主要的是我不需要Supplier模型,我不知道如何實施映射加載所有供應商的手機作爲Shop模型的子列表。

任何有關如何創建映射的幫助表示讚賞。

在此先感謝。

P.S. ShopSupplierContact型號不會被更改或刪除。

回答

0
<class name="SupplierContact" table="SupplierContact"> 
    <id name="id" column="id"> 
     <generator class="native" /> 
    </id> 
    ... other properties etc ... 
    <many-to-one name="Shop" column="ShopId" class="Shop" /> 
</class> 

<class name="Shop" table="Shop"> 
    <id name="Id" column="Id"> 
     <generator class="native" /> 
    </id> 
    ... properties etc ... 
    <set name="SupplierContacts" table="SupplierContact"> 
     <key column="ShopId" /> 
     <one-to-many class="SupplierContact" /> 
    </set> 
</class> 

編輯:固定錯字。

+0

有些東西不對:我只用一個'SupplierContact'來獲得'Shop's螞蟻,它們都有相同的ID。 – Ramunas

+0

你可以發佈你實際與這個班級一起工作的地方嗎?聽起來好像還有其他事情在發生。另一種選擇是查看NHProf - 它顯示所有通過NH進行的數據庫交易,並可以幫助揭示更多的光線。 – TheITGuy

+0

NH抱怨'key'節點中的'name'屬性。如果這有什麼區別,我使用NH 2.1.2。 – Ramunas