fluently - Sintaxis para definir un filtro NHibernate con Nhibernate Fluent?
nhibernate download c# (3)
Parece que no puedo encontrar la sintaxis correcta para definir un filtro de nhibernate usando Nhibernate fluido.
Estoy tratando de seguir el blogpost de este ayende:
http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx
Definí la fórmula en mi propiedad con el método .FormulaIs () pero no puedo encontrar en google cómo traducir esta definición a nhibernate con fluidez:
< filter-def name=''CultureFilter''>
< filter-param name=''CultureId'' type=''System.Int32''/>
< /filter-def>
En caso de que alguien aún esté viendo esto, acabo de enviar un parche en el código de Google para que NHibernate Fluent admita filtros. Puedes verlo en uso en la respuesta de snicker anterior.
Si compila Fluent desde la fuente, ahora hay soporte para filtros. Los usas así:
Primero crea una clase que hereda de FluentNHibernate.Mapping.FilterDefinition
:
using FluentNHibernate.Mapping;
namespace PonyApp.FluentFilters
{
public class PonyConditionFilter : FilterDefinition
{
public PonyConditionFilter()
{
WithName("PonyConditionFilter")
.AddParameter("condition",NHibernate.NHibernateUtil.String);
}
}
}
En su ClassMap para su clase, use el método 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");
}
}
}
A continuación, agregue el filtro a su configuración fluida:
Fluently.Configure()
.Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter)))
//blah blah bunches of other important stuff left out
.BuildSessionFactory();
Luego puede encenderlo y apagarlo como lo haría con el vanilla NHibernate:
session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful");
Esta publicación reciente en la discusión fluida de NHibernate me lleva a pensar que los filtros todavía no son compatibles con la API Fluent.