我有界面:
public interface IHasList<T>
{
IList<T> Items { get; set; }
}
我想使用一对多映射将这样的类映射到列表:
public class Model : IHasList<A>, IHasList<B>
{
...
}
我可以这样做吗?如果是,如何编写映射?
答案 0 :(得分:0)
这是可能的,但有点奇怪。
首先,为了在C#中声明这一点,Model看起来像这样:
public class Model : IHasList<A>, IHasList<B>
{
IList<A> IHasList<A>.Items { get; set; }
IList<B> IHasList<B>.Items { get; set; }
}
所以你需要让NHibernate理解:
<bag name="IHasList<A>.Items" table="ModelItemA">
<key />
<one-to-many class="A" />
</bag>
<bag name="IHasList<B>.Items" table="ModelItemB">
<key />
<one-to-many class="A" />
</bag>
(我假设A和B是具有常规一对多关系的映射实体,将其更改为多对多或元素并根据需要添加级联/反向属性)
它非常干净,实际上是通过XML转义引入的。您还必须使用类的全名。