我现在开始使用NHibernate,但我仍然没有可测试的环境。
我想向您了解,如果将IList映射到.hbm文件中的Set时出现问题,有经验的研究员。
像这样:
//c#
IList<TrechoItem> trechos_item;
<!-- xml .hbm -->
<set name="TrechosItem" table="trecho_item" lazy="true" inverse="true" fetch="select">
<key column="id_item"/>
<one-to-many class="TrechoItem"/>
</set>
或者,在此:
IList<Autor> Autores;
<set name="Autores" lazy="true" table="item_possui_autor">
<key column="id_item"/>
<many-to-many class="Autor" column="id_autor"/>
</set>
这可能吗?或者我做错了什么?
我尝试使用<map>
和<list>
,但这些并没有给我所有选项。
答案 0 :(得分:3)
通常,使用<set>
的映射将使用派生自Iesi.Collections.ISet
的类作为其集合类型。如果您想使用IList
,则应该使用<bag>
进行映射。
我还建议你看一下Fluent NHibernate吗?
答案 1 :(得分:2)
使用一组,例如来自Iesi.Collections的ISet,更好地表达了你的意图(唯一性)。
如果您不想依赖于特定的第三方库,您可以使用ICollection接口和Microsoft的具体类型HashSet,尽管您将失去对接口名称的意图狂欢方面(只有具体的impl是明确的。)