使用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接口的类。
答案 0 :(得分:1)
您可以使用<any>
实现此目的。你甚至不需要枚举; NHibernate将根据具体的Groupable设置正确的鉴别器。