2011-10-27 16 views

cevap

8

I NHibernate.Cfg.Configuration kullanarak bu elde edebildi:

var cfg = new Configuration(); 

var filterDef = new FilterDefinition(
    "filterName", 
    null, // or your default condition 
    new Dictionary<string, IType> { { "filterParamName", NHibernateUtil.Int32 } }, 
    false); 
cfg.AddFilterDefinition(filterDef); 

// cfg.AddMapping(...) 
// cfg.DataBaseIntegration(...) 

var sessionFactory = cfg.BuildSessionFactory(); 

sonra işletme eşleme filtre tanımlayın: aşağıdaki gibi sonra

public class EntityMap : ClassMapping<Entity> 
{ 
    public EntityMap() 
    { 
     Table("Entity"); 
     Filter("filterName", m => m.Condition("FilteredField = :filterParamName")); 
     // remaining mapping 
    } 
} 

ve kullanmak:

using(var session = sessionFactory.OpenSession()) 
{ 
    var filterValue = 123; 
    session 
     .EnableFilter("filterName") 
     .SetParameter("filterParamName", filterValue); 
} 

Umarım faydalı bulursunuz.

6

Bilginize,

O AddFilterDefinition çağrısı AddMapping önce olduğuna dikkat etmek önemlidir, aksi takdirde bir ArgumentException("An item with the same key has already been added") alacak!

+0

bu benim günümü yarattı! –