父
public class ParentMap : Map<Parent>
{
public ParentMap()
{
DiscriminateSubClassesOnColumn<string>("Provider").Nullable();
}
}
儿童:
public class Child1Map : SubclassMap<Child1>
{
public FacebookAccountMap()
{
DiscriminatorValue("child1");
}
}
public class Child2Map : SubclassMap<Child2>
{
public FacebookAccountMap()
{
DiscriminatorValue("child2");
}
}
来自服务我获取Parent
的实例但属性item.Provider
等于 childOne ,我如何获得Child1
或Child2
的实例基于关于proprty提供者的价值?
答案 0 :(得分:0)
你的问题我害怕不是很清楚,但我会猜测:
很可能你没有收到Parent的实例,而是ParentProxy的实例,这是NHibernate生成的继承自Parent的类。此类不能转换为Child1,但实例实际上包含 Child1类的实例。方法调用被转发到此包含的类。这个机制是NHibernate的延迟加载系统的一部分 - 因为NHibernate需要创建代理对象而不加载完整的对象数据,它不知道要使用哪种确切的类型。
如果您通过关注其他类的引用来获取实例,则会发生这种情况。
这个想法通常是:
As<T>()
method in the base class。