2011-10-27 7 views

Odpowiedz

8

udało mi się to osiągnąć za pomocą NHibernate.Cfg.Configuration:

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(); 

następnie określić filtru mapowania jednostki:

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

a następnie używać go w sposób następujący:

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

Mam nadzieję, że ci się to przyda.

6

FYI,

Ważne jest, aby pamiętać, że wezwanie do AddFilterDefinition jest przed AddMapping, inaczej dostaniesz ArgumentException("An item with the same key has already been added")!

+0

to sprawiło, że mój dzień! –

Powiązane problemy