2

Fluent NHibernate AutoPersistenceModelGenerator に問題があります。カスタムマップを取得したくありません。

Sharp Architecture 2.0、Fluent NHibernate 1.2、NHibernate 3.1 を使用。

私の現在の関連する構成は次のとおりです。

    public AutoPersistenceModel Generate()
    {
        // This mappings group works with the exception of custom maps!!
        var mappings = AutoMap.AssemblyOf<SecurableEntity>(new AutomappingConfiguration());
        mappings.Conventions.Setup(GetConventions());
        mappings.IgnoreBase<Entity>();
        mappings.IgnoreBase<SecurableEntity>();
        mappings.IgnoreBase(typeof(EntityWithTypedId<>));
        mappings.UseOverridesFromAssemblyOf<AutoPersistenceModelGenerator>();

        //mappings.UseOverridesFromAssemblyOf<UserMap>(); // Should call Override method of UserMap, but doesn't appear to...
        mappings.Override<User>(new UserMap().Override()); // This hack fixes the issue with calling the Override method of UserMap.
        mappings.UseOverridesFromAssemblyOf<UserMap>();

        return mappings;
    }

class UserMap : IAutoMappingOverride<User>
{
    public void Override(AutoMapping<User> mapping)
    {
        //mapping => mapping.Table("Users");
        mapping.Table("Users");
    }

    public Action<AutoMapping<User>> Override()
    {
        return map =>
            {
                map.Table("Users");
            };
    }
}

構成にさまざまな変更を加えて、Fluent NHibernate に関するインターネット記事を流してみましたが、役に立ちませんでした。Sharp Arch 1.x を使用した作業バージョンと、以前のバージョンの NHibernate と Fluent があります。私が見逃している構文の変更があったと仮定しています。ありとあらゆる助けをいただければ幸いです。

ありがとうございました!ジョン

4

1 に答える 1

4

Fluent NHibernateは、指定されたアセンブリからすべてのオーバーライドを取得するためのAssembly.GetExportedTypes()メソッドを使用します。このメソッドのドキュメントにあるように、アセンブリの外部に表示される、このアセンブリで定義されたパブリックタイプを取得します。オーバーライドは暗黙的に内部です。前に追加するだけで機能します。publicclass UserMap

于 2011-10-20T17:17:48.180 に答える