2009-03-11 5 views
34

Je suis novice à NHibernate et j'essaie d'utiliser Fluent pour la cartographie. Mon nom de classe d'entité est différent du nom de la table de base de données à laquelle il doit être mappé. J'utilise la classe de mappage dérivée de ClassMap<>, mais je ne peux pas spécifier le nom de la table: la propriété TableName de ClassMap est en lecture seule.Comment spécifier le nom de la table dans la classe Fluent NHibernate ClassMap?

Merci pour votre aide.

Répondre

43

Utilisez plutôt .

+9

Ceci est maintenant. En date de septembre 2009 Table ("nom_table"); – Chin

6

Est-ce que ça fonctionne comme?

public class UserAccountMap : ClassMap<UserAccount> { 
    public UserAccountMap() { 
     Table("User"); 
     Id(x => x.UserID, "UserID").GeneratedBy.Identity(); 
     Map(x => x.FirstName, "FirstName").Length(50) 
      .Not.Nullable(); 
     Map(x => x.LastName, "LastName").Length(50) 
      .Not.Nullable(); 
    } 
} 
+1

L'utilisateur est un mot clé réservé. joindre à '. Voir http://stackoverflow.com/a/2879630/475882 – jaxxbo

6

L'exemple ci-dessus me conduit dans la bonne direction. Cela a fonctionné pour moi. Mon nom de classe est "Party" et mon nom de table est "prty.Party".

public class PartyMap : ClassMap<Party> 
{ 
    public PartyMap() 
    { 
    Table("prty.Party"); 
    Id(x => x.PartyID); 
    Map(x => x.PartyTypeLID); 
    Map(x => x.OrganizationTypeLID); 
    Map(x => x.PreferredContactMethodLID); 
    Map(x => x.PrimaryLanguageLID); 
    Map(x => x.PartyVID); 
    Map(x => x.BeginDate); 
    Map(x => x.EndDate); 
    Map(x => x.RowDescriptor); 
    Map(x => x.RowModifiedDate); 
    Map(x => x.RowModifiedBy); 
    Map(x => x.RowCreatedDate); 
    Map(x => x.RowCreatedBy); 
    }   
} 
+0

Peut-être existe un moyen d'ignorer tous ces appels de carte? –

Questions connexes