有没有办法过滤掉HasManyToMany映射中的行?
我有三个表(遗留,无法更改它们)Service,Resource和ResourceService。 ResourceService允许多个资源链接到多个服务,但它也有一个“活动”列。
在我的资源域对象上,我使用“ProvidedBy”属性映射链接到资源的服务,该属性返回服务数组。问题是我只想要标记为活动的服务中的行。
我错过了一些基本的东西吗?
答案 0 :(得分:4)
Fluent NHibernate 1.0版不支持NHibernate过滤器或filter-defs。我向James Gregory和团队提交了一个补丁,他们现在已经将它们整合到了主干中,所以如果你得到主干而不是发布版本,你就会发现能够做到这一点。
基本上,您可以设置一个继承自FilterDefinition
的类,如下所示:
public class TestFilter : FilterDefinition
{
public TestFilter()
{
WithName("test")
.WithCondition("Age > :age")
.AddParameter("age", NHibernateUtil.Int32);
}
}
然后在您的流畅映射中应用此过滤器:
HasManyToMany(x => x.Oldies)
.Table("People")
.ApplyFilter<TestFilter>();
您可以设置参数值并使用会话对象正常启用过滤器:
session.EnableFilter("test").SetParameter("age", 65);
答案 1 :(得分:0)
这不是Where
的候选人吗?
HasManyToMany(x => x.Whatevers)
.Where(x => x.Active);
答案 2 :(得分:0)
您可以使用过滤器实际实现外连接条件。