2009-06-06 17 views
20

Nhibernate kullanarak nhibernate filtresini tanımlamak için doğru sözdizimini bulamıyorum. Bu ayende en blog yayınını izlemeye çalışıyorumAkıcı Nhibernate ile NHibernate Filtresi tanımlamak için sözdizimi?

: Ben .FormulaIs() metodu ile benim mülküm formülünü tanımlı ama akıcı için bu tanımı çevirmek nasıl google bulamıyorum http://ayende.com/Blog/archive/2006/12/26/LocalizingNHibernateContextualParameters.aspx

nhibernate:

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

cevap

6

This recent post Akıcı NHibernate tartışmada filtreler henüz Akıcı API tarafından desteklenmeyen beni inandıramaz.

+3

Yanıt zamanında desteklenmeyen bir özellik daha sonra desteklenmedi mi? Bu acımasız. –

+0

Bir reddetmenin sert olduğunu kabul ediyorum, ancak hala çerçevenin mevcut durumunu not etmek için cevabınızı güncellemek isteyebilirsiniz. –

9

Hala bunu izleyen biri varsa, filtreleri desteklemek için Fluent NHibernate için Google kodunda bir yama gönderdim. Yukarıdaki snicker cevabında kullanımda görebilirsiniz.

58

Kaynaktan Fluent oluşturursanız, artık filtreler için destek var. , Sınıfında için ClassMap olarak

using FluentNHibernate.Mapping; 

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

SüzgeciUygula yöntemi kullanın:

İlk FluentNHibernate.Mapping.FilterDefinition devralmasını bir sınıf oluşturmak: Bu gibi onları kullanmak

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"); 
     } 
    } 
} 

Sonra filtreyi Apple Şifre akıcı yapılandırması:

Fluently.Configure() 
    .Mappings(m => m.FluentMappings.Add(typeof(PonyConditionFilter))) 
    //blah blah bunches of other important stuff left out 
    .BuildSessionFactory(); 

Sonra açabilirsiniz. vanilya NHibernate ile yaptığınız gibi kapalı:

session.EnableFilter("PonyConditionFilter").SetParameter("condition","Wonderful"); 
+0

2013 - Bu, şu anda kaynaklardan yararlanmadan akıcı bir şekilde kullanılabilir. –

+1

Yorumunuz bana çok yardımcı oldu. Teşekkür ederim. Bu arada, akıcı yapılandırmanıza filtre eklemek için stept, şu gibi bir satır varsa: .Mappings (m => m.FluentMappings.AddFromAssemblyOf ()) , Fluent NHibernate "algıladığı" için gerekli değildir. o. – iberodev