.net 在Fluent NHibernate自动映射中,有没有办法通过名称空间忽略基类型/类?

.net 在Fluent NHibernate自动映射中,有没有办法通过名称空间忽略基类型/类?,.net,nhibernate,fluent-nhibernate,automapping,.net,Nhibernate,Fluent Nhibernate,Automapping,目前,我使用以下代码忽略Fluent NHibernate自动映射的基类型: AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration()) .Conventions.Setup(GetConventions()) .IgnoreBase<MyCore.BaseTypes.AmazingBaseType>() .IgnoreBas

目前,我使用以下代码忽略Fluent NHibernate自动映射的基类型:

AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
            .Conventions.Setup(GetConventions())
            .IgnoreBase<MyCore.BaseTypes.AmazingBaseType>()
            .IgnoreBase<MyCore.BaseTypes.AnotherAmazingBaseType>()
            .UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();

您的
MyAutoMapping配置是什么样子的?您可以使用以下内容覆盖
ShouldMap(Type)

public override bool ShouldMap(System.Type type)
{
  return 
    type.BaseType.Namespace == typeof (MyCore.BaseTypes.BaseIWant).Namespace;
}

您的
MyAutoMapping配置是什么样子的?您可以使用以下内容覆盖
ShouldMap(Type)

public override bool ShouldMap(System.Type type)
{
  return 
    type.BaseType.Namespace == typeof (MyCore.BaseTypes.BaseIWant).Namespace;
}

如果您的基类型是抽象的,则它们不会包含在映射中

如果您的基类型是抽象的,则它们不会包含在映射中

您可以在配置中直接执行此操作,如下所示:

AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
            .Conventions.Setup(GetConventions())
            .Where(t => t.Namespace != "MyCore.BaseTypes")
            .UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
AutoMap.AssemblyOf(新的MyDefaultAutomappingConfiguration())
.Conventions.Setup(GetConventions())
.Where(t=>t.Namespace!=“MyCore.BaseTypes”)
.UseOverridesFromAssemblyOf();

您可以在配置中直接执行此操作,如下所示:

AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
            .Conventions.Setup(GetConventions())
            .Where(t => t.Namespace != "MyCore.BaseTypes")
            .UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
AutoMap.AssemblyOf(新的MyDefaultAutomappingConfiguration())
.Conventions.Setup(GetConventions())
.Where(t=>t.Namespace!=“MyCore.BaseTypes”)
.UseOverridesFromAssemblyOf();

出于某种原因,它似乎仍在尝试映射它们,因为我看到它们出现在我的约定中……这很奇怪。Fluent wiki基本上说,除非你明确告诉它要被包括在内,否则它不应该被包括在内。似乎出于某种原因,它仍在试图绘制它们的地图,因为我看到它们出现在我的惯例中……这很奇怪。Fluent wiki基本上说,除非你明确告诉它要被包括在内,否则它不应该被包括在内。那么这是唯一的方法吗?我不知道这是不是唯一的方法,但这是最常见和最直接的方法。这就是我用的:)我把这作为答案。我无法使对ShouldMap()方法的更改使我的自动映射配置生效。实际上,我太匆忙地将此标记为答案。。。我得到一个运行时错误,它告诉我不能将Where方法与AutomappingConfiguration结合使用……直到最近,Where才是实现这一点的方法。过去我在几个项目中使用过它。在最近的FNH版本中,似乎应该用ShouldMap取代它。那么这是唯一的方法吗?我不知道这是否是唯一的方法,但它是最常见和最直接的方法。这就是我用的:)我把这作为答案。我无法使对ShouldMap()方法的更改使我的自动映射配置生效。实际上,我太匆忙地将此标记为答案。。。我得到一个运行时错误,它告诉我不能将Where方法与AutomappingConfiguration结合使用……直到最近,Where才是实现这一点的方法。过去我在几个项目中使用过它。在最近的FNH版本中,似乎应该用ShouldMap取代它。