2012-11-05 2 views
1

J'ai une bibliothèque de modèles que je veux construire automatiquement ses mappages NHibernate en utilisant FluentNhibernate. Il y a une convention que j'aimerais ajouter à ce modèle et que chaque nom de table se termine par 's'. Alors, voici ce que je fais:AutoMapping FluentNHibernate: ClassConvention ne fonctionne pas

new AutoPersistenceModel() 
      .AddEntityAssembly(typeof(User).Assembly) 
      .Conventions.Add(typeof(ClassConvention)) 
      .WriteMappingsTo(@"E:\Temp\"); 

Voici le code de ClassConvention:

private class ClassConvention:IClassConvention 
    { 
     public void Apply(IClassInstance instance) 
     { 
      instance.Table(instance.EntityType.Name+"s"); 
     } 
    } 

mais il ne fonctionne tout simplement pas l'attribut de table work.No est ajouté à étiquette de classe quand je lance ce code. S'il vous plaît aidez-moi à comprendre ce qui ne va pas avec mon code?

Mise à jour:

Je déboguée mon code et je suis sûr que cette ligne:

instance.Table(instance.EntityType.Name+"s"); 

est appelé.

+0

Quelle version de NHibernate Fluent utilisez-vous? – Firo

+0

NHibernate 3.3.0.4 – Beatles1692

Répondre

0

Votre classe de définition de convention doit être publique et non publique

+0

Droit :) mais c'est une faute de frappe. – Beatles1692

Questions connexes