Syntax to define a NHibernate Filter with Fluent Nhibernate?

后端 未结 3 1882
Happy的楠姐
Happy的楠姐 2020-11-27 05:52

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

3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-11-27 06:34

    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
        {
            public PonyMap()
            {
                Id(x => x.Id);
                Map(x => x.PonyName);
                Map(x => x.PonyColor);
                Map(x => x.PonyCondition);
                ApplyFilter("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");
    

提交回复
热议问题