Есть ли способ использовать шаблоны T4 с Subsonic 2.2 - PullRequest
1 голос
/ 08 октября 2010

Я понимаю, что Subsonic 3.0 - новейшая и самая лучшая версия, и я понимаю, что Subsonic 3.0 имеет шаблоны T4.

Но Subsonic 3.0 не имеет обратной совместимости с Subsonic 2.2, то есть мой проект с сотнями файлов кода, написанных на языке запросов Subsonic 2.2, не будет работать в Subsonic 3.0.

Итак, мой вопрос: существуют ли шаблоны t4, которые кто-то сделал для Subsonic 2.2, чтобы заменить созданные файлы, которые он создает. Моя база данных огромна, а количество генерируемых файлов становится немного безумным.

Кто-нибудь сделал эту способность или кто-то создал специальный инструмент, чтобы помочь пути обновления?

Спасибо за чтение

1 Ответ

2 голосов
/ 13 октября 2010

SubSonic 3 был огромным перекодированием ядра, используя некоторые новые методы, такие как T4, вместо собственных шаблонов и предоставляя механизм запросов linq.

Но большинство старых добрых функций, таких как запросинструмент, все еще доступны.

Если вы сделали это:

var p = new Product();
p.ProductName = "new product";
p.Save();

или это

var p = DB.Select()
         .From<Product>()
         .Where(Product.ProductCode).IsEqualTo("1234")
         .ExecuteSingle<Product>();

, это все равно будет работать с SubSonic3

Есливы достаточно смелы, и мое предложение для пути обновления будет таким:

  • Убедитесь, что ваш DAL использует "generatenullableproperties = true"
  • Если не воссоздать его и исправить возможный компилятор/ исключения среды выполнения:

    if (p.QuantityHasValue) p.Total = p.Quantity * p.Price;
    // changes to
    if (p.Quantity.HasValue) p.Total = p.Quantity * p.Price;
    
  • Измените пространство имен создаваемого вами файла с Your.Namespace.DAL на Your.Namespace.LegacyDAL

  • создайте DAL с помощью шаблонов ActiveRecordв вашем старом пространстве имен
  • Если вы использовали InlineQuery, имя класса изменилось на CodingHorror
  • , исправьте все ошибки компилятора (возможно, сгенерированные имена / типы свойств немного отличаются)
  • переписатьзапросы при необходимости
  • если вы используете дозвуковую миграцию: придерживайтесь их, так как в SubSonic3
  • test, test, test !!!пока все не будет работать нормально
  • используйте функции subsonic3 (например, linq) только для новых задач
...