NHibernate,属性实现接口,我们可以从多个表中填充吗?

时间:2011-12-15 01:17:30

标签: c# nhibernate interface fluent-nhibernate nhibernate-mapping

使用NHibernate和Fluent Mappings。

我们有一个类(GroupAssignment)的属性(Groupable),它实现了一个接口(IGroupable)。同一类的另一个属性是枚举(ItemType),它指定了IGroupable的来源,即哪个表。

我们可以映射这个配置,以便NHibernate填充IGroupable属性,根据Enum鉴别器链接到正确的表吗?如果是这样,我们怎样才能做到这一点?

请注意,IGroupable属性与GroupAssignment类具有一对一的关系。

public class GroupAssignment
{
    public virtual new long ID { get; private set; }
    public virtual Group Group { get; set; }
    public virtual TypeEnum.TypeGroupItem ItemType { get; set; }
    public virtual IGroupable Groupable { get; set; }
}

理想情况下,NHibernate应该从中获得IGroupable TableA时ItemType == TableA,
TableB当ItemType == TableB等。

我还应该补充一点,ItemType枚举所指向的每个表都映射到实现IGroupable接口的类。

1 个答案:

答案 0 :(得分:1)

您可以使用<any>实现此目的。你甚至不需要枚举; NHibernate将根据具体的Groupable设置正确的鉴别器。

查看5.2.4. Any type mappings

相关问题