NHibernate.Mapping.Attributes.Filter

NHibernate.Mapping.Attributes.Filter,nhibernate,attributes,nhibernate-mapping,Nhibernate,Attributes,Nhibernate Mapping,我正在使用NHibernate和NHibernate.mapping.Attributes库映射我的数据库表,我一直在努力让过滤器属性正常工作 假设一个类a有一组B类的对象,我有以下几点: [NHibernate.Mapping.Attributes.Set(0, Inverse = true, Lazy = NHibernate.Mapping.Attributes.CollectionLazy.False)] [NHibernate.Mapping.Attributes.Key(1, Col

我正在使用NHibernate和NHibernate.mapping.Attributes库映射我的数据库表,我一直在努力让过滤器属性正常工作

假设一个类a有一组B类的对象,我有以下几点:

[NHibernate.Mapping.Attributes.Set(0, Inverse = true, Lazy = NHibernate.Mapping.Attributes.CollectionLazy.False)]
[NHibernate.Mapping.Attributes.Key(1, Column = "ClassAId")]
[NHibernate.Mapping.Attributes.OneToMany(2, Class = "ClassB, Assembly")]

    public virtual ISet<ClassB> ClassBs { get; set; }
[NHibernate.Mapping.Attributes.Set(0,Inverse=true,Lazy=NHibernate.Mapping.Attributes.CollectionLazy.False)]
[NHibernate.Mapping.Attributes.Key(1,Column=“ClassAId”)]
[NHibernate.Mapping.Attributes.OneToMany(2,Class=“ClassB,Assembly”)]
公共虚拟ISet类B{get;set;}
我想在此集合上创建一个筛选器,以仅带来满足给定条件的B类对象,例如Status=1


如何创建这样的过滤器?

设置映射的where参数应该可以帮助您解决问题。根据文档,其中参数:

其中:(可选)指定任意 SQL WHERE条件在何时使用 正在检索或删除集合 (如果集合应 仅包含可用资源的子集 (数据)

因此,要根据状态进行筛选(假设Status是为ClassB映射的表中的一个SQL列-尽管该列不必在NHibernate映射中映射)

[NHibernate.Mapping.Attributes.Set(0,…,其中=“Status=1”,…)]
...
公共虚拟ISet类B{get;set;}
[NHibernate.Mapping.Attributes.Set(0,...., Where = "Status = 1", .....)]
...
public virtual ISet<ClassB> ClassBs { get; set; }