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" />
- 为了实现我想要的,我创建了基类+两个子类。以下是配置: