C# 使用引用继承属性的lambda在Fluent NHibernate映射中应用筛选器?
是否有任何方法可以在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(); 理想情况下,我希望这样(编译
HasMany(m => m.GroupUsers)
.Table("GroupUsers")
.KeyColumns.Add("UserEntityId")
.Inverse()
.Cascade.All();
理想情况下,我希望这样(编译时会抛出一个未定义的运行时错误):
问题的关键是,我希望映射只回那些删除日期为空的组用户条目
编辑:删除日期在FluentNhibernate的基类上:
T其中(表达式>其中)
设置此一对多关系的where子句。注:此
仅支持简单的情况,请使用字符串重载处理更复杂的情况
条款
对基类属性的过滤似乎属于“复杂”情况
因此,您应该使用Where(String)
重载(我还没有测试语法…):
我也有同样的问题,因为我不认为这应该是一个“复杂”的案例,我最终改变了FluentNH源代码中的一行,解决了这个问题。我提出了一个拉取请求,但在它被合并之前(或者如果它根本没有被合并),您可以从这里构建它:
编辑:已合并。是在
GroupUser
类上声明的DeleteDate
属性还是在基类上声明的属性?因为Where()
withLinq
有一些限制。。。但是,您可以始终返回字符串。其中(“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();