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接口的类。

NHibernate,属性实现接口,可以从多个表填充

您可以使用<any>实现这一点。你甚至不需要枚举;NHibernate会根据具体的Groupable来设置正确的鉴别符。

查看5.2.4。任何类型映射