2010-03-25 8 views
3

J'essaie d'utiliser la fonction de mappage automatique de Fluent avec nHinbernate pour mapper une classe avec un nom différent de celui de la table elle-même.Courant: Nom de table différent du nom de l'entité

(Ceci est purement pour des raisons stylistiques que nous avons une classe nommée Foo qui contient un objet nommé Bar mais le nom de la table est FooBar. Nous préférerions ne pas avoir un Foo.FooBar de propriété.)

Je ne peux pas trouver quelque chose détaillant comment donner à Fluent un indice sur ce changement.

Répondre

7

Avec classmap vous pouvez spécifier le nom de la table dans le mapping.

public class BarMap : ClassMap<Bar> 
{ 
    public BarMap() 
    { 
     Table("FooBar"); 
    } 
} 

Avec automap, vous pouvez remplacer le nom de la table.

.Mappings(m => m.AutoMappings.Add(AutoMap.AssemblyOf<Bar>() 
    .Override<Bar>(b => { 
     b.Table("FooBar"); 
})) 

Vous pouvez également utiliser conventions pour affecter la dénomination de table de toutes les entités.

+0

Pas vraiment ce que nous cherchons. Nous essayons de toujours automatiser l'assemblage. Nous ne voulons pas créer un mappage manuel pour la classe, mais seulement spécifier un nom de table différent pour une entité spécifique. – Matt

+0

@Matt le deuxième exemple utilise automap et ne change que le nom de la table pour une seule entité –

+0

Oui, c'est ce que je cherchais trouvé une minute avant de le poster aussi. Merci pour l'aide – Matt

2

Vous pouvez spécifier le nom de la table dans le mappage. Donc, il ressemblera à quelque chose comme ceci:

public class FooMap : ClassMap<Foo> 
{ 
    Table("FooBar"); 

    // Rest of your mapping goes here. 
} 
Questions connexes