2009-06-06 3 views
20

유창한 Nhibernate를 사용하여 nhibernate 필터를 정의하는 올바른 구문을 찾을 수없는 것 같습니다. 나는이 ayende의 블로그 게시물을 따르려고Fluent Nhibernate가있는 NHibernate 필터를 정의하는 구문은 무엇입니까?

: 나는 .FormulaIs() 메소드 내 재산에 공식을 정의하지만, 유창이 정의를 번역하는 방법을 구글에서 찾을 수없는 http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx

NHibernate에 :

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

답변

6

This recent post 유창 NHibernate에 토론에 필터가 아직 유창함 API를 지원하지 않습니다 있는게 틀림 없어.

+3

나중에 대답 할 때 지원되지 않는 기능이 지원 되었기 때문에 Downvoted? 그것은 가혹합니다. –

+0

downvote가 가혹하다는 것에 동의하지만 프레임 워크의 현재 상태를 기록하기 위해 답을 업데이트 할 수도 있습니다. –

9

누군가 아직도 이것을보고있는 중이라면, 필자는 Fluent NHibernate가 필터를 지원하도록 Google 코드에 패치를 제출했습니다. 위의 snicker의 답변에서 사용중인 것을 볼 수 있습니다.

58

소스에서 Fluent를 빌드하면 이제 필터가 지원됩니다. , 클래스에 대한 귀하의 ClassMap에서

using FluentNHibernate.Mapping; 

namespace PonyApp.FluentFilters 
{ 
    public class PonyConditionFilter : FilterDefinition 
    { 
     public PonyConditionFilter() 
     { 
      WithName("PonyConditionFilter") 
       .AddParameter("condition",NHibernate.NHibernateUtil.String); 
     } 
    } 
} 

으로 applyFilter의 방법을 사용하십시오 :

먼저 FluentNHibernate.Mapping.FilterDefinition에서 상속하는 클래스를 만들 :이처럼 사용할

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"); 
+0

2013 - 소스에서 빌드하지 않고 유창한 N 최대 절전 모드로 사용할 수 있습니다. –

+1

귀하의 의견은 많은 도움이되었습니다. 고맙습니다. 그런데 Fluent NHibernate가 "감지"하기 때문에 이미 .Mappings (m => m.FluentMappings.AddFromAssemblyOf ()) 과 같은 라인이 있으면 유창한 설정에 필터를 추가하는 것이 필요하지 않습니다. 그것. – iberodev

관련 문제