2011-03-09 3 views
0

Je ne fais que tromper avec l'ORM subsonique pour la première fois. J'utilise les modèles ActiveRecordInvalid Token 'event' dans la classe ... erreur lors de la compilation du projet SubSonic

J'ai modifié les fichiers d'inclusion conformément aux instructions du site Web subsonique et j'ai pointé le fichier app.config vers ma base de données MySql.

Quand je vais compiler la bibliothèque de classes que je reçois l'erreur suivante

« l'événement » jeton non valide en classe, struct ou membre Interface déclaration

Je devine que le problème est en raison du fait que l'un de mes tableaux est nommé "Events" et Subsonic doit prendre cela, couper le "S" et finir par générer du code qui tente de créer un type nommé "événement" qui crée des problèmes car l'événement est un mot clé dans C#.

Ai-je raison à ce sujet? Et y a-t-il un moyen de contourner cela sans renommer les tables dans ma base de données?

EDIT:

L'erreur est générée dans le fichier context.cs sur la ligne suivante

 public Query<event> events { get; set; } 

Répondre

2

Look en haut de votre fichier Settings.ttinclude. Il existe une méthode CleanUp que vous pouvez utiliser pour modifier les noms de vos tables. Je ne sais pas si ce feux, avant ou après le « s » get haché de mais l'une ou l'autre manière, vous pouvez ajouter un montant supplémentaire « s » pour forcer le nom de la classe à être events plutôt que event

ou vous pouvez même renommer la table en quelque chose de totalement différent

string CleanUp(string tableName){ 
    string result=tableName; 

    //strip blanks 
    result=result.Replace(" ",""); 

    //put your logic here... 

     if (result.ToLower() == "event") 
      result = result + "s"; 
     else if (result.ToLower() == "events") 
      result = result + "s"; 

     // or 
     if (result.ToLower() == "event") 
      result = "somethingthathappensonaspecificdate"; // ;-) 

    return result; 
} 
Questions connexes