看来我找不到正确的语法来使用流畅的 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(使用前将#替换为@)