在运行时动态地向所有表中添加NHIBERNATE过滤器定义



我使用代码方法映射来定义实体映射。现在,我想在大约200个映射类上配置相同的过滤器。是否有任何方法可以在运行时动态添加过滤器映射?

我的课程映射看起来与下面的映射相似。

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

我不想在所有映射类中粘贴以下过滤器映射,而是想在运行时映射过滤器。

Filter("filterName", m => m.Condition("FilteredField = :filterParamName"));

ModelMapper(应在代码中的某个地方使用以'编译'所有映射并将其提供给Configuration(类包含许多后/事件事件的许多事件,以动态修改映射。AfterMapClassBeforeMapClass似乎应该为您工作。类似:

var mapper = new ModelMapper();
mapper.AfterMapClass +=
    (inspector, type, customizer) =>
    {
        customizer.Filter("filterName", m => m.Condition("FilteredField = :filterParamName")); 
    };

最新更新