2009-12-16 8 views
0

Je tente de transformer une table nommée app_user qui a une colonne nommée created_dt dans AppUser.CreatedDt dans SubSonic3 en utilisant le modèle ActiveRecord. D'après ce que je l'ai vu, on devrait pouvoir modifier la table et les noms de colonnes que nécessaire dans la méthode de CleanUp Settings.ttincludeUn bon moyen de transformer les noms de colonne et de table dans SubSonic 3

J'ai donc ajouté cette méthode pour Settings.ttinclude

string UnderscoreToCamelCase(string input) { 

     if(!input.Contains("_")) 
      return input; 

     StringBuilder sb = new StringBuilder(); 
     for (int i = 0; i < input.Length; i++) 
     { 
      if (input[i] == '_') 
      { 
       while (i < input.Length && input[i] == '_') 
        i++; 
       if (i < input.Length) 
        sb.Append(input[i].ToString().ToUpper()); 
      } 
      else 
      { 
       if (sb.Length == 0) 
        sb.Append(input[i].ToString().ToUpper()); 
       else 
        sb.Append(input[i]); 
      } 
     } 

     return sb.ToString(); 
    } 

Et cet appel à CleanUp

result=UnderscoreToCamelCase(result); 

Si je lance une requête telle que:

var count = (from u in AppUser.All() 
      where u.CreatedDt >= DateTime.Parse("1/1/2009 0:0:0") 
      select u).Count(); 

Je reçois un NotSupportedException, Le membre « CreatedDt » est pas pris en charge

qui vient d'une méthode en ligne TSqlFormatter.sql 152

protected override Expression VisitMemberAccess(MemberExpression m) 

Si je commente l'appel à UnderscoreToCamelCase et utiliser les noms tels qu'ils sont dans la base de données tout fonctionne bien. Une chose intéressante est que lorsque tout fonctionne correctement, la méthode VisitMemberAccess n'est jamais appelée.

Est-ce que quelqu'un d'autre a été capable de convertir les noms de table/colonne avec undersores en eux en chameau dans SubSonic3?

Répondre

0

Il peut y avoir une réponse à cela sur un autre thread dans StackOverflow, mais cela implique de modifier le code source de Subsonic.core. link text

Questions connexes