在运行时动态地将 NHibernate 过滤器定义添加到所有表
Adding NHibernate Filter definition to all the tables dynamically at runtime
我使用代码映射方法来定义实体映射。现在我想在大约 200 个映射 class 上配置相同的 filter。有什么方法可以在 运行 时间动态添加过滤器映射吗?
我的 class-映射看起来与下面类似。
public class EntityMap : ClassMapping<Entity>
{
public EntityMap()
{
Table("Entity");
Filter("filterName", m => m.Condition("FilteredField = filterParamName"));
// remaining mapping
}
}
我不想在所有 class 映射中粘贴下面的过滤器映射,我想在 运行 时间映射过滤器。
Filter("filterName", m => m.Condition("FilteredField = :filterParamName"));
ModelMapper
(应该在代码中的某处使用 'compile' 所有映射并将它们提供给 Configuration
) class 包含许多 After/Before 事件允许动态修改映射。 AfterMapClass
或 BeforeMapClass
似乎对您有用。类似于:
var mapper = new ModelMapper();
mapper.AfterMapClass +=
(inspector, type, customizer) =>
{
customizer.Filter("filterName", m => m.Condition("FilteredField = :filterParamName"));
};
我使用代码映射方法来定义实体映射。现在我想在大约 200 个映射 class 上配置相同的 filter。有什么方法可以在 运行 时间动态添加过滤器映射吗?
我的 class-映射看起来与下面类似。
public class EntityMap : ClassMapping<Entity>
{
public EntityMap()
{
Table("Entity");
Filter("filterName", m => m.Condition("FilteredField = filterParamName"));
// remaining mapping
}
}
我不想在所有 class 映射中粘贴下面的过滤器映射,我想在 运行 时间映射过滤器。
Filter("filterName", m => m.Condition("FilteredField = :filterParamName"));
ModelMapper
(应该在代码中的某处使用 'compile' 所有映射并将它们提供给 Configuration
) class 包含许多 After/Before 事件允许动态修改映射。 AfterMapClass
或 BeforeMapClass
似乎对您有用。类似于:
var mapper = new ModelMapper();
mapper.AfterMapClass +=
(inspector, type, customizer) =>
{
customizer.Filter("filterName", m => m.Condition("FilteredField = :filterParamName"));
};