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