![](/img/trans.png)
[英]NHibernate - Cascade Merge to child entities fails for detached parent entity
[英]Cast Nhibernate parent entity to child
父级
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提供的价值 ?
恐怕您的问题尚不完全清楚,但我将作一个猜测:
您很可能不会收到Parent的实例,但是会收到ParentProxy的实例,这是NHibernate生成并继承自Parent的类。 此类不能强制转换为Child1,但是该实例实际上将包含 Child1类的实例。 方法调用将转发到此包含的类。 这种机制是NHibernate的延迟加载系统的一部分-由于NHibernate需要创建代理对象而不加载完整的对象数据,因此它不知道使用哪种确切类型。
如果您通过遵循其他类的引用来获取实例,则会发生这种情况。
通常的想法是:
As<T>()
方法 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.