Domanda

Sto avendo un problema con Fluent NHibernate AutoPersistenceModelGenerator. Non vuole far salire mappe personalizzate.

Utilizzando Sharp Architettura 2.0, Fluent NHibernate 1.2 e NHibernate 3.1.

Il mio attuale configurazione rilevante è la seguente:

    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");
            };
    }
}

Ho provato a fare varie modifiche alla configurazione e versando sopra articoli di internet su Fluent NHibernate, senza alcun risultato. Ho una versione di lavoro utilizzando Sharp Arch 1.x, e le versioni precedenti di NHibernate e Fluent. Sto supponendo che ci sia stato un cambiamento nella sintassi che mi manca. Qualsiasi aiuto sarebbe molto apprezzato.

Grazie! John

È stato utile?

Soluzione

Fluent NHibernate utilizzare Assembly.GetExportedTypes() metodo per ottenere tutte le sostituzioni da data di assemblaggio. Come dicono la documentazione di questo metodo, si ottiene i pubblici tipi definiti in questa assemblea, che sono esterno visibile l'assemblea. La vostra modifica è implicitamente interno . Basta aggiungere public prima class UserMap e funzionerà.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top