NHibernate中映射级别上的筛选实体

NHibernate中映射级别上的筛选实体,nhibernate,Nhibernate,假设我有一个名为People的数据库表和实体People。比方说,我需要一种快速的方法来删除应用程序中随处显示的人员子集。所以我将IsDeleted列添加到People表中,并将该列中的值设置为1 在实体框架中,有一种机制指定,对于列IsDeleted中的值设置为1的实体实例,不应获取,映射框架会自动过滤数据。是否可以使用NHibernate实现?您可以创建抽象类,例如PeopleBase,从中派生您的人员类并将您的实体映射到它。 之后,您可以像这样使用鉴别器(没有检查正确性,但它应该可以工作)

假设我有一个名为People的数据库表和实体People。比方说,我需要一种快速的方法来删除应用程序中随处显示的人员子集。所以我将IsDeleted列添加到People表中,并将该列中的值设置为1


在实体框架中,有一种机制指定,对于列IsDeleted中的值设置为1的实体实例,不应获取,映射框架会自动过滤数据。是否可以使用NHibernate实现?

您可以创建抽象类,例如
PeopleBase
,从中派生您的
人员
类并将您的实体映射到它。
之后,您可以像这样使用鉴别器(没有检查正确性,但它应该可以工作):


// ...
//属性。。。
// ...

您可以在数据库中定义
where
属性

其中(可选)指定要使用的任意SQL where条件 检索此类的对象时


NH的代码映射应该类似于Fluent NHibernate的映射。

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

  • 具有鉴别器值的子类

    <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" />
    
    
    
<discriminator column="MasterRowId" />