有没有办法在 Fluent NHibernate 自动映射中按命名空间忽略基类型/类?
目前,我正在使用以下代码通过 Fluent NHibernate 自动映射来忽略基类型:
AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
.Conventions.Setup(GetConventions())
.IgnoreBase<MyCore.BaseTypes.AmazingBaseType>()
.IgnoreBase<MyCore.BaseTypes.AnotherAmazingBaseType>()
.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
有没有办法通过命名空间(即 MyCore.BaseTypes
)忽略基类型,而不必使用 我拥有的每个基本类型的 IgnoreBase()
方法?
我尝试使用 DefaultAutomappingConfiguration
扩展类(即 MyDefaultAutomappingConfiguration
)中的重写 ShouldMap(Type)
方法来完成此操作,但它仍然尝试映射基本类型:
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;
}
}
Currently, I am using the following code to ignore base types with Fluent NHibernate automapping:
AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
.Conventions.Setup(GetConventions())
.IgnoreBase<MyCore.BaseTypes.AmazingBaseType>()
.IgnoreBase<MyCore.BaseTypes.AnotherAmazingBaseType>()
.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
Is there a way to ignore base types by a namespace (i.e. MyCore.BaseTypes
) instead of having to use the IgnoreBase()
method for every base type I have?
I tried accomplishing this using my overriden ShouldMap(Type)
method in DefaultAutomappingConfiguration
-extended class (i.e. MyDefaultAutomappingConfiguration
) to accomplish this but it still tried to map the base types:
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;
}
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您的
MyAutomappingConfiguration
是什么样的?您可以使用以下内容覆盖ShouldMap(Type)
:What does your
MyAutomappingConfiguration
look like? You can overrideShouldMap(Type)
with something like:如果您的基本类型是抽象的,它们将不会包含在映射中。
If your base types are abstract they wont be included in the mapping.
您可以直接在配置中执行此操作,如下所示:
You can do it directly in your configuration like this: