Dre*_*vak 21 nhibernate fluent-nhibernate
似乎我找不到使用流畅的Nhibernate定义nhibernate过滤器的正确语法.
我试图关注这个ayende的博文:
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>
Run Code Online (Sandbox Code Playgroud)
sni*_*ker 60
如果您从源代码构建Fluent,则现在支持过滤器.你像这样使用它们:
首先创建一个继承自FluentNHibernate.Mapping.FilterDefinition以下的类:
using FluentNHibernate.Mapping;
namespace PonyApp.FluentFilters
{
public class PonyConditionFilter : FilterDefinition
{
public PonyConditionFilter()
{
WithName("PonyConditionFilter")
.AddParameter("condition",NHibernate.NHibernateUtil.String);
}
}
}
Run Code Online (Sandbox Code Playgroud)
在类的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");
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后将过滤器添加到您的流畅配置:
Fluently.Configure()
.Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter)))
//blah blah bunches of other important stuff left out
.BuildSessionFactory();
Run Code Online (Sandbox Code Playgroud)
然后就像使用香草NHibernate一样打开和关闭它:
session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11607 次 |
| 最近记录: |