2009-05-19 39 views
0

我試圖映射包含列表的字典。映射包含列表的Dictionarys

,我有以下的一組表:

CREATE TABLE Item(id) 

CREATE TABLE Filter(id) 

CREATE TABLE FilterType(id) 

CREATE TABLE ItemFilter(
item REFERENCES Item(id), 
filter REFERENCES Filter(id), 
filterType REFERENCES FilterType(id) 
) 

,我想這樣做的映射:

class Item{ 
public IDictionary<long, IList<ItemFilter>> ItemFiltersByType; 
} 

longfilterType的ID。

我就是用這個映射,但它不工作:

任何幫助,將不勝感激:P. 韓國社交協會

回答

1

我不認爲你可以做你想要什麼在這裏做。最接近的可用映射模式是三元關聯。這實際上就是你所擁有的,但是你沒有獨特的索引。 NHibernate只支持原始IDictionary接口,它不支持單個鍵的多個值。如果你有用於過濾式的唯一索引值(由名字來看,你正確不),你可以這樣做:

<map name="ItemFiltersByType"> 
    <key column="Item_id" /> 
    <index-many-to-many class="FilterType" column="FilterType_id" /> 
    <many-to-many class="Filter" column="Filter_id" /> 
</map> 

我認爲在這種情況下,最好的解決辦法是將操作轉移到一個存儲庫的方法如下:

IEnumerable<Filter> GetItemFiltersByType(FilterType type); 
+0

Tks,我想我無法做我想要的,經過幾個小時的搜索和實驗。最終將其映射到List並使用Linq將其分組(它是一組非常小的項目)。 – Megacan 2009-05-22 10:07:02