Как избежать ошибок в SubSonic 3, если имя столбца в единственном числе совпадает с именем таблицы? - PullRequest
0 голосов
/ 16 ноября 2011

Извините за запутанный заголовок, я не был уверен, как сказать это по-другому ...

Хорошо, вот проблема:

У меня есть таблица с именем «Продукты», а первичный ключ - «Продукт». Обычно это не вызывает никаких проблем. Тем не менее, я перехожу на SubSonic 3, и это делает все таблицы в единственном числе. Таким образом, когда я перестраиваю шаблоны T4, он выдает ошибку, когда переименовывает столбец в «ProductX», но не обновляет остальную часть кода. Например, это ошибки:

public IQueryable<Product> Products
    {
        get
        {
              var repo=AM.Inventory.Library.SonicData.Product.GetRepo();
              return from items in repo.GetAll()
                   where items.Product == _Product
                   select items;
        }
    }

Но, если я поменяю его на:

public IQueryable<Product> Products
    {
        get
        {
              var repo=AM.Inventory.Library.SonicData.Product.GetRepo();
              return from items in repo.GetAll()
                   where items.ProductX == _Product
                   select items;
        }
    }

Код будет прекрасно работать. Если бы мне пришлось сделать это один или два раза, это нормально ... но всякий раз, когда я перестраивал файлы T4, мне приходилось обновлять файлы вручную.

Есть ли способ избежать этого?

Спасибо, Andrew

1 Ответ

1 голос
/ 19 декабря 2011

Модифицируйте свои шаблоны T4. Вот для чего они там.

Ищите MakeSingular (), MakePlural (), Cleanup () в ttinclude, и код, который добавляет «X», находится в ActiveRecord.tt. Взломай их !!!

На самом деле, это звучит как ошибка в коде именования, так что это может быть время для внесения вклада в устранение ошибки.

...