Nhibernate 3.2 eşleme koduyla Filtre tanımları nasıl eklenir?

ModelInspector, Filtre tanımlarını tanımlamanın yollarını sağlamıyor gibi görünüyor. Herhangi bir fikir/Geçici Çözüm?

Aşağıdakileri kodlarla eşleştirerek oluşturmam gerekiyor:


  

5

2 cevap

Bunu NHibernate.Cfg.Configuration kullanarak başarmayı başardım:

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

sonra filtreyi varlık eşlemesinde tanımlayın:

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

ve sonra aşağıdaki gibi kullanın:

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

Umarım, bunu faydalı bulursunuz.

8
katma

Bilginize,

AddFilterDefinition çağrısının AddMapping öncesi olduğunu unutmayın; aksi halde bir ArgumentException ("Aynı anahtara sahip bir öğe eklenmiş") alırsınız. ) !

6
katma
bu benim günümü yaptı!
katma yazar Kat Lim Ruiz, kaynak