0

現在、次のコードを使用して、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)されたメソッドを使用してこれを達成しようとしましたが、それでも基本型をマップしようとしました:DefaultAutomappingConfigurationMyDefaultAutomappingConfiguration

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;
    }
}
4

3 に答える 3

1

基本タイプが抽象である場合、それらはマッピングに含まれません。

于 2010-11-20T01:11:46.777 に答える
1

次のように、構成で直接実行できます。

AutoMap.AssemblyOf<Class1>(new MyDefaultAutomappingConfiguration())
            .Conventions.Setup(GetConventions())
            .Where(t => t.Namespace != "MyCore.BaseTypes")
            .UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();
于 2010-11-20T22:19:46.473 に答える
1

あなたはどのMyAutomappingConfigurationように見えますか?ShouldMap(Type)次のようなものでオーバーライドできます。

public override bool ShouldMap(System.Type type)
{
  return 
    type.BaseType.Namespace == typeof (MyCore.BaseTypes.BaseIWant).Namespace;
}
于 2010-11-19T18:53:15.053 に答える