Question

Je vais avoir un problème avec Fluent NHibernate AutoPersistenceModelGenerator. Il ne veut pas prendre des cartes personnalisées.

Utilisation de Sharp architecture 2.0, Fluent NHibernate 1.2 et 3.1 NHibernate.

Ma configuration actuelle pertinente est la suivante:

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

Je l'ai essayé de faire diverses modifications à la configuration et la coulée sur internet des articles sur Fluent NHibernate, en vain. J'ai une version de travail à l'aide de Sharp arc 1.x et les versions antérieures de NHibernate et Fluent. Je suppose qu'il ya eu un changement dans la syntaxe que je suis absent. Toute aide serait grandement appréciée.

Merci! John

Était-ce utile?

La solution

Courant NHibernate utiliser la méthode Assembly.GetExportedTypes() obtenir tous les remplacements de l'assemblage donné. Comme cette méthode de dire de la documentation, il obtient les publics types définis dans cet ensemble qui sont visibles extérieur l'assemblée. Votre dérogation est implicitement interne . Il suffit d'ajouter public avant class UserMap et ça va marcher.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top