Я пытаюсь преобразовать таблицу с именем app_user
, в которой есть столбец с именем created_dt
, в AppUser.CreatedDt в SubSonic3 с использованием шаблона ActiveRecord. Из того, что я видел, можно изменять имена таблиц и столбцов по мере необходимости в методе CleanUp файла Settings.ttinclude
.
Поэтому я добавил этот метод в 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();
}
А потом этот вызов в CleanUp
result=UnderscoreToCamelCase(result);
Если я запускаю запрос, такой как:
var count = (from u in AppUser.All()
where u.CreatedDt >= DateTime.Parse("1/1/2009 0:0:0")
select u).Count();
Я получаю NotSupportedException, член 'CreatedDt' не поддерживается
, который происходит от метода в строке TSQlFormatter.sql 152
protected override Expression VisitMemberAccess(MemberExpression m)
Если я закомментирую вызов UnderscoreToCamelCase и использую имена, как они есть в базе данных, все будет хорошо.
Одна интересная вещь заключается в том, что когда все работает нормально, метод VisitMemberAccess никогда не вызывается.
Кто-нибудь еще мог преобразовать имена таблиц / столбцов с подчеркиванием в них в верблюжий регистр в SubSonic3?