Hoe Filterdefinities toe te voegen met Nhibernate 3.2 mapping op code?

De ModelInspector lijkt niet de middelen te bieden om filterdefinities te definiëren. Eventuele ideeën/oplossingen?

Ik moet het volgende genereren met toewijzingen op code:


  

5

2 antwoord

Ik kon dat bereiken met NHibernate.Cfg.Configuration:

var cfg = new Configuration();

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

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

var sessionFactory = cfg.BuildSessionFactory();

definieer het filter vervolgens in entity mapping:

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

en gebruik het dan als volgt:

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

Ik hoop dat je dit nuttig zult vinden.

8
toegevoegd

TER INFO,

Het is belangrijk om te weten dat de aanroep van AddFilterDefinition vóór AddMapping ligt, anders krijgt u een ArgumentException ("Een item met dezelfde sleutel is al toegevoegd" ) !

6
toegevoegd
dit maakte mijn dag!
toegevoegd de auteur Kat Lim Ruiz, de bron