コードでNhibernate 3.2のマッピングでフィルタ定義を追加するには?

ModelInspectorはフィルタ定義を定義する手段を提供していないようです。任意のアイデア/回避策?

私は、コードを使って次のようにマッピングを生成する必要があります。


  

5

2 答え

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

エンティティマッピングでフィルタを定義します。

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

次のように使用します。

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

私はあなたに願っています。

8
追加された

また、

AddFilterDefinition の呼び出しは AddMapping の前にあることに注意してください。そうしないと、 ArgumentException( "同じキーを持つ項目が既に追加されています" )

6
追加された
これは私の一日を作った!
追加された 著者 Kat Lim Ruiz,