It seems I can\'t find the correct syntax to define a nhibernate filter using fluent Nhibernate.
I\'m trying to follow this ayende\'s blogpost:
http://ayende
In case anyone's still watching this, I've just submitted a patch on Google code for Fluent NHibernate to support filters. You can see it in use in snicker's answer above.
This recent post in the Fluent NHibernate discussion leads me to believe that filters are not yet supported by the Fluent API.
If you build Fluent from source, there is now support for filters. You use them like this:
First create a class inheriting from FluentNHibernate.Mapping.FilterDefinition
:
using FluentNHibernate.Mapping;
namespace PonyApp.FluentFilters
{
public class PonyConditionFilter : FilterDefinition
{
public PonyConditionFilter()
{
WithName("PonyConditionFilter")
.AddParameter("condition",NHibernate.NHibernateUtil.String);
}
}
}
In your ClassMap for your class, use the ApplyFilter method:
namespace PonyApp.Entities.Mappings
{
public class PonyMap : ClassMap<Pony>
{
public PonyMap()
{
Id(x => x.Id);
Map(x => x.PonyName);
Map(x => x.PonyColor);
Map(x => x.PonyCondition);
ApplyFilter<PonyConditionFilter>("PonyCondition = :condition");
}
}
}
Then add the filter to your fluent config:
Fluently.Configure()
.Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter)))
//blah blah bunches of other important stuff left out
.BuildSessionFactory();
Then you can turn it on and off just as you would with vanilla NHibernate:
session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful");