解释NHibernate每层表多态性的行为

问题描述

给定基于同一表的基类和两个子类并带有一个标识符,我将两个不同的列映射到相同的属性-每个子类中一个。我本以为NH会考虑到这一点而生成查询,但事实并非如此。这是类,映射和查询

课程

env path.repo=foo somecommand ...

映射

env

查询

env | awk -F= '/path.repo/ {print $2}'

我曾期望NH为第一个查询生成sql,该查询discA ='A'的记录的ValueA中查找ValueA,在disc ='B'的记录中查找ValueB。相反,我得到了

namespace Entities.Domain
{
    public class Base
    {
        public virtual int Id { get; set; }
        public virtual string Value { get; set; }
    }

    public class ChildA : Base
    {
    }

    public class ChildB : Base
    {
    }
}

其他两个查询的行为与我期望的一样:

<hibernate-mapping default-cascade="save-update" assembly="Entities" namespace="Entities.Domain" xmlns="urn:nhibernate-mapping-2.2">
  <class name="Base" table="Base">
    <id name="Id" type="Int32">
      <column name="ID" not-null="true" precision="10" scale="0" sql-type="int" />
      <generator class="identity" />
    </id>
    <discriminator>
      <column name="disc" not-null="true" sql-type="char" />
    </discriminator>
    <subclass name="ChildA" extends="Base" discriminator-value="A">
        <property name="Value" type="AnsiString" column="valueA"/>
    </subclass>
    <subclass name="ChildB" extends="Base" discriminator-value="B">
        <property name="Value" type="AnsiString" column="valueB"/>
    </subclass>
  </class>
</hibernate-mapping>

我设置错了吗? NH是否不处理这种情况?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)