NHibernate,属性实现接口,可以从多个表填充
本文关键字:填充 属性 实现 接口 NHibernate | 更新日期: 2023-09-27 18:17:49
使用NHibernate和Fluent映射
我们有一个类(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当ItemType == TableA,
当ItemType == TableB等
我还应该补充一点,ItemType enum所指向的每个表都映射到实现IGroupable接口的类。
您可以使用<any>
实现这一点。你甚至不需要枚举;NHibernate会根据具体的Groupable来设置正确的鉴别符。
查看5.2.4。任何类型映射