ModelInspectorはフィルタ定義を定義する手段を提供していないようです。任意のアイデア/回避策?Nhibernate 3.2のフィルタ定義をコードで追加する方法は?
私はコードでマッピングして、次を生成する必要があります。
<filter-def name="filterName" use-many-to-one="false">
<filter-param name="filterParamName" type="Int32"/>
</filter-def>
ModelInspectorはフィルタ定義を定義する手段を提供していないようです。任意のアイデア/回避策?Nhibernate 3.2のフィルタ定義をコードで追加する方法は?
私はコードでマッピングして、次を生成する必要があります。
<filter-def name="filterName" use-many-to-one="false">
<filter-param name="filterParamName" type="Int32"/>
</filter-def>
私は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();
はその後、エンティティマッピングでフィルタを定義します。
public class EntityMap : ClassMapping<Entity>
{
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);
}
私はあなたを希望しますが、これは役に立ちます。
FYI、
AddFilterDefinition
への呼び出しがAddMapping
前にあることに注意することが重要であるが、そうでなければ、ArgumentException("An item with the same key has already been added")
を取得します!
これは私の一日を作った! –