有没有办法在流畅的nhibernate映射文件中指定一种只能有条件地将值拉入业务实体的方法?
我当前的地图代码段是:
HasMany(m => m.GroupUsers)
.Table("GroupUsers")
.KeyColumns.Add("UserEntityId")
.Inverse()
.Cascade.All();
理想情况下,我想要这个(编译但会抛出gu未定义的运行时错误):
HasMany(m => m.GroupUsers)
.Table("GroupUsers")
.KeyColumns.Add("UserEntityId")
.Where(gu => gu.DeleteDate == null)
.Inverse()
.Cascade.All();
问题的关键在于,我希望映射只能删除那些具有空删除日期的组用户条目。
编辑:删除日期在基类
上答案 0 :(得分:2)
来自FluentNhibernate API documentation:
其中(表达式> where)
为此一对多关系设置where子句。注意:这个 只支持简单的情况,使用字符串重载更复杂 条款。
似乎过滤基类属性属于“复杂”案例。
所以你应该使用Where(String)
重载(我没有测试过语法......):
HasMany(m => m.GroupUsers)
.Table("GroupUsers")
.KeyColumns.Add("UserEntityId")
.Where("DeleteDate is null")
.Inverse()
.Cascade.All();
答案 1 :(得分:1)
我有同样的问题,因为我不相信这应该是一个“复杂”的案例,我最终改变了FluentNH源代码中的一行解决了它。我提出了一个拉取请求但是直到它被合并(或者它根本没有合并)你可以从这里构建它:https://github.com/alexDevBR/fluent-nhibernate/
编辑:它被合并了。