2009-05-19 37 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