2009-01-27 7 views
4

J'ai découvert que l'une des tables d'un db hérité sur lequel je travaille a une colonne appelée "Order". Malheureusement, je ne peux pas changer la structure de la base de données.
Mon Fluent classe NHibernate ressembleColonne DB nommée "Order" avec Fluent NHibernate

public class SiteMap : AutoMap<Site> 
{ 
    public SiteMap() { 
     WithTable("Sites"); 
     Id(x => x.ID, "Id") 
      .WithUnsavedValue(0) 
      .GeneratedBy.Identity(); 
     Map(x => x.Name, "Name"); 
     //various columns mapping and then... 
     Map(x => x.SiteOrder, "Order"); 
    } 
} 

Je ne sais pas si les problèmes sont FluentNH ou NHibernate lui-même, mais je peux confirmer que le problème réside dans le « FSMA » nom réservé.

Comment résoudre ce problème?

Mise à jour: comme suggéré de mettre sous la forme [Ordre] travaillé. Merci!
Mais maintenant je suis lié uniquement à SQL2005?

Répondre

5

Essayez de mettre Ordre dans les coches de retour: `` Ordre . Depuis FluentNH génère des fichiers HBM à l'exécution, j'imagine que cela devrait résoudre le problème.

2

Quelle est la base de données dans les coulisses?

Avec MS SQL, vous devriez être en mesure de résoudre ce problème en entourant le champ « Ordre » avec des crochets

Map(x => x.SiteOrder, "[Order]"); 

Modifier: crochets doivent travailler dans toutes les versions de MS SQL, ainsi que MS Access . Je ne suis pas sûr des autres plates-formes, mais il est également susceptible de fonctionner dans d'autres.