C# 使用引用继承属性的lambda在Fluent NHibernate映射中应用筛选器?

C# 使用引用继承属性的lambda在Fluent NHibernate映射中应用筛选器?,c#,fluent-nhibernate,mapping,C#,Fluent Nhibernate,Mapping,是否有任何方法可以在fluent nhibernate映射文件中指定一种仅有条件地将值拉入业务实体的方法 我当前的映射代码段是: HasMany(m => m.GroupUsers) .Table("GroupUsers") .KeyColumns.Add("UserEntityId") .Inverse() .Cascade.All(); 理想情况下,我希望这样(编译

是否有任何方法可以在fluent nhibernate映射文件中指定一种仅有条件地将值拉入业务实体的方法

我当前的映射代码段是:

            HasMany(m => m.GroupUsers)
            .Table("GroupUsers")
            .KeyColumns.Add("UserEntityId")
            .Inverse()
            .Cascade.All();
理想情况下,我希望这样(编译时会抛出一个未定义的运行时错误):

问题的关键是,我希望映射只回那些删除日期为空的组用户条目

编辑:删除日期在FluentNhibernate的基类上

T其中(表达式>其中)

设置此一对多关系的where子句。注:此 仅支持简单的情况,请使用字符串重载处理更复杂的情况 条款

对基类属性的过滤似乎属于“复杂”情况

因此,您应该使用
Where(String)
重载(我还没有测试语法…):


我也有同样的问题,因为我不认为这应该是一个“复杂”的案例,我最终改变了FluentNH源代码中的一行,解决了这个问题。我提出了一个拉取请求,但在它被合并之前(或者如果它根本没有被合并),您可以从这里构建它:


编辑:已合并。

是在
GroupUser
类上声明的
DeleteDate
属性还是在基类上声明的属性?因为
Where()
with
Linq
有一些限制。。。但是,您可以始终返回字符串
。其中(“DeleteDate为NULL”)
DeleteDate是在基础类上声明的。由于DeleteDate在基础表上,因此它不起作用,但如果将来需要筛选某个值,最好知道这一点。
            HasMany(m => m.GroupUsers)
            .Table("GroupUsers")
            .KeyColumns.Add("UserEntityId")
            .Where(gu => gu.DeleteDate == null)
            .Inverse()
            .Cascade.All();
HasMany(m => m.GroupUsers)
            .Table("GroupUsers")
            .KeyColumns.Add("UserEntityId")
            .Where("DeleteDate is null")
            .Inverse()
            .Cascade.All();