Синтаксис для определения фильтра NHibernate с свободно NHibernate на?
Кажется, я не могу найти правильный синтаксис для определения фильтра nhibernate с помощью fluent Nhibernate.
Я пытаюсь следовать этот блогпост ayende это:
http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx
Я определил формулу на моем свойстве С.FormulaIs () метод, но не может найти в google, как перевести это определение в fluent nhibernate:
< filter-def name='CultureFilter'>
< filter-param name='CultureId' type='System.Int32'/>
< /filter-def>
3 ответов
это недавнее сообщение в обсуждении Fluent NHibernate я считаю, что фильтры еще не поддерживаются Fluent API.
если вы строите Fluent из источника, теперь есть поддержка фильтров. Вы используете их так:
создать класс, наследующий от FluentNHibernate.Mapping.FilterDefinition
:
using FluentNHibernate.Mapping;
namespace PonyApp.FluentFilters
{
public class PonyConditionFilter : FilterDefinition
{
public PonyConditionFilter()
{
WithName("PonyConditionFilter")
.AddParameter("condition",NHibernate.NHibernateUtil.String);
}
}
}
в ClassMap для вашего класса, используйте метод ApplyFilter:
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");
}
}
}
затем добавьте фильтр в fluent config:
Fluently.Configure()
.Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter)))
//blah blah bunches of other important stuff left out
.BuildSessionFactory();
затем вы можете включать и выключать его так же, как с ванильным NHibernate:
session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful");
Если кто-то все еще смотрит это, я только что отправил патч на код Google для Fluent NHibernate для поддержки фильтров. Вы можете увидеть его в использовании в ответе snicker выше.