使用 Fluent Nhibernate 定义 NHibernate 过滤器的语法?

2024-03-22

看来我找不到正确的语法来使用流畅的 Nhibernate 定义 nhibernate 过滤器。

我正在尝试关注 ayende 的博文:

http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx

我用 .FormulaIs() 方法在我的属性上定义了公式,但在谷歌上找不到如何将此定义转换为流畅的 nhibernate:

 < filter-def name='CultureFilter'>
   < filter-param name='CultureId' type='System.Int32'/>
 < /filter-def> 

如果您从源代码构建 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");
        }
    }
}

然后将过滤器添加到您的流畅配置中:

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");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Fluent Nhibernate 定义 NHibernate 过滤器的语法? 的相关文章

随机推荐