2010-08-11 185 views
0

我有接口:映射多接口繼承類NHibernate的

public interface IHasList<T> 
{ 
    IList<T> Items { get; set; } 
} 

而且我想用一個一對多映射到表映射這樣的類:

public class Model : IHasList<A>, IHasList<B> 
{ 
    ... 
} 

燦我這樣做?如果是,如何編寫映射?

+0

爲什麼這與其他任何映射不同? – Paco 2010-08-11 14:42:26

回答

0

這是可能的,但有點奇怪。

首先,爲了在C#中聲明這一點,模式是這樣的:

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&lt;A&gt;.Items" table="ModelItemA"> 
    <key /> 
    <one-to-many class="A" /> 
</bag> 
<bag name="IHasList&lt;B&gt;.Items" table="ModelItemB"> 
    <key /> 
    <one-to-many class="A" /> 
</bag> 

(我假設A和B是具有常規一對多關係的映射實體,將其改變爲多對多或元素,並根據需要添加級聯/反轉屬性)

這很乾淨,混亂其實是在由XML轉義導致。你還必須爲類使用全名。