gpt4 book ai didi

c# - 如何通过代码使用 Nhibernate 3.2 映射添加过滤器定义?

转载 作者:太空狗 更新时间:2023-10-29 22:12:44 27 4
gpt4 key购买 nike

ModelInspector 似乎没有提供定义过滤器定义的方法。任何想法/解决方法?

我需要通过代码生成以下映射:

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

我希望你会发现这很有用。

关于c# - 如何通过代码使用 Nhibernate 3.2 映射添加过滤器定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7922353/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com