2010-08-30 6 views
0

Je vais avoir quelques problèmes avec obtenir la convention suivante au travail:Fluent NHibernate: Colonne convention de mappage

public class ColumnNameUpperConvention : IPropertyConvention 
{ 
    public void Apply(IPropertyInstance instance) 
    {   
     string cName = instance.Property.Name.ToUpper(); 
     instance.Column(cName); 
    } 
} 

Ce que je veut le code ci-dessus pour faire est de mapper une propriété appelée « Modifié » à une colonne nommée "MODIFIED".

Et voici ma config:

var config = 
    Fluently.Configure() 
     .Database(OracleClientConfiguration.Oracle10 
     .ConnectionString(c => c.FromConnectionStringWithKey(cstringName))) 
     .Mappings(m => 
      { 
       m.FluentMappings.AddFromAssemblyOf<AgilityObject>(); 
       m.AutoMappings.Add(
         AutoMap.AssemblyOf<AgilityObject>(mappingConfiguration) 
         .Conventions.Add<ColumnNameUpperConvention>()); 
      }) 
     .ExposeConfiguration(x => x.SetProperty("current_session_context_class", "thread_static")) 
     .ExposeConfiguration(x => x.SetProperty("generate_statistics", "true")) 
     .BuildSessionFactory(); 

Quand je debug je peux voir que mon code de convention est exécuté, mais il ne semble pas que ce fait ne quoi que ce soit.

Ai-je raté quelque chose?

PS. Les mappages que j'ai définis explicitement dans ClassMap remplacent-ils automatiquement les conventions? Il y a des exceptions à la convention ci-dessus et je veux mapper ces propriétés à la main.

Répondre

0

Mon mauvais. Je devais utiliser IAutoMappingOverride au lieu de ClassMap si je devais utiliser AutoMapping à tous.

Questions connexes