目前,我使用以下代码忽略Fluent NHibernate自动化的基类型:
AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
.Conventions.Setup(GetConventions())
.IgnoreBase<MyCore.BaseTypes.AmazingBaseType>()
.IgnoreBase<MyCore.BaseTypes.AnotherAmazingBaseType>()
.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
是否可以通过命名空间(即MyCore.BaseTypes
)忽略基类型,而不必对我拥有的每种基本类型使用IgnoreBase()
方法?
我尝试使用ShouldMap(Type)
中的覆盖DefaultAutomappingConfiguration
方法完成此操作 - 扩展类(即MyDefaultAutomappingConfiguration
)来完成此操作但仍尝试映射基类型:
public class MyDefaultAutomappingConfiguration: DefaultAutomappingConfiguration {
public override bool ShouldMap(Type type) {
return !IsBaseType(type);
}
private bool IsBaseType(Type type) {
return type.Namespace == typeof(MyCore.BaseTypes).Namespace;
}
}
答案 0 :(得分:1)
MyAutomappingConfiguration
看起来像什么?您可以使用以下内容覆盖ShouldMap(Type)
:
public override bool ShouldMap(System.Type type)
{
return
type.BaseType.Namespace == typeof (MyCore.BaseTypes.BaseIWant).Namespace;
}
答案 1 :(得分:1)
如果您的基本类型是抽象的,则它们不会包含在映射中。
答案 2 :(得分:1)
您可以直接在您的配置中执行此操作:
AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
.Conventions.Setup(GetConventions())
.Where(t => t.Namespace != "MyCore.BaseTypes")
.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();