Nibernate 3.2 kodi bilan kodlash bilan filtri ta'riflarini qanday qo'shish kerak?

ModelInspector, Filtrni ta'riflarini aniqlash vositalarini taqdim etmaydi. Har qanday fikrlar/vaqtinchalik echimlar?

Kod bilan mos keladigan ma'lumotlar bilan quyidagilarni ishlab chiqarishim kerak:


  

5

2 javoblar

Bunga NHibernate.Cfg.Configuration yordamida erishish mumkin edi:

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

keyin obyektni xaritalashda filtrni belgilang:

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

va keyin uni quyidagicha foydalaning:

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

Umid qilamanki, bu foydali bo'ladi.

8
qo'shib qo'ydi

FYI,

AddFilterDefinition ga qo'ng'iroq qilish AddMapping dan oldin bo'lsa, aks holda siz ArgumentException ("Xuddi shu kalitga ega element allaqachon qo'shilgan" ) !

6
qo'shib qo'ydi
bu mening kunimni qildi!
qo'shib qo'ydi muallif Kat Lim Ruiz, manba