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?