Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
NHibernate鉴别器值=“;空";不在基类上工作-未应用筛选器_Nhibernate - Fatal编程技术网

NHibernate鉴别器值=“;空";不在基类上工作-未应用筛选器

NHibernate鉴别器值=“;空";不在基类上工作-未应用筛选器,nhibernate,Nhibernate,对于以下类映射: <class name="Person" table="Person" discriminator-value="null"> <id name="ID" column="ID" > <generator class="identity"/> </id> <discriminator column="MasterId" /> <property name="Long

对于以下类映射:

<class name="Person" table="Person" discriminator-value="null">
    <id name="ID" column="ID" >
        <generator class="identity"/>
    </id>
    <discriminator column="MasterId" />
    <property name="LongName" column="LONGNAME" />
    <property name="ShortName" column="SHORTNAME" />
    // other stuff here ...
    <subclass name="PersonHistory" discriminator-value="not null">
        <property name="MasterId" />
    </subclass>
</class>

//这里还有其他东西。。。
当我执行:

        var query =
            from lac in session.Query<Person>()
            orderby lac.LongName
            select lac;
        return query.ToList();
var查询=
来自session.Query()中的lac
orderby lac.LongName
选择lac;
返回query.ToList();
我从Person表中获取所有条目,MasterId设置为null和notnull。是否有一种方法可以获取MasterId=null的NHibernate仅获取实体?

在您的案例中使用公式如何

<discriminator formula="case when MasterId is null then 0 else 1 end" />

然后为类设置鉴别器属性值:

  • 对于个人:鉴别器值=“0”
  • 对于PersonHistory:discriminator value=“1”

    • 为了实现我想要的,我创建了基类+两个子类。以下是配置:

      • 具有鉴别器值的子类

        <subclass name="People" discriminator-value="null">
        </subclass>
        <subclass name="PeopleHistory" discriminator-value="not null">
            <property name="MasterRowId" />
        </subclass>
        
        <discriminator column="MasterRowId" />
        
        
        
      • 类中的鉴别器

        <subclass name="People" discriminator-value="null">
        </subclass>
        <subclass name="PeopleHistory" discriminator-value="not null">
            <property name="MasterRowId" />
        </subclass>
        
        <discriminator column="MasterRowId" />