Правильный способ преобразования имен столбцов и таблиц в SubSonic 3

Я пытаюсь преобразовать таблицу с именем 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 не поддерживается

который исходит из метода в строке 152 TSqlFormatter.sql

protected override Expression VisitMemberAccess(MemberExpression m)

Если я закомментирую вызов UnderscoreToCamelCase и использую имена, как они есть в базе данных, все будет работать нормально.

Интересно то, что, когда все работает нормально, метод VisitMemberAccess никогда не вызывается.

Кто-нибудь еще мог преобразовать имена таблиц / столбцов с подчеркиванием в них в верблюжий регистр в SubSonic3?


person Lance    schedule 16.12.2009    source источник


Ответы (1)


Ответ на это может быть в другом потоке в StackOverflow, но это влечет за собой изменение исходного кода Subsonic.core. текст ссылки

person James Roland    schedule 06.08.2010