На SubSonic я обратил внимание случайным образом, но был действительно удивлен, на сколько он может упростить жизнь разработчику. SubSonic представляет собой "A Super High-fidelity Batman Utility Belt that works up your Data Access (using Linq in 3.0), throws in some much-needed utility functions, and generally speeds along your dev cycle." или же попросту говоря мощный и в тоже время простой в применении ORM Framework. Поддерживается SQLServer, MySQL, SQLlite и в разработке Oracle (исчезает проблема переносимости). SubSonic содержит много вкусностей, о которых я попытаюсь рассказать.
Итак, SubSonic реализовывает 2 сценария работы, SimpleRepository и ActiveRecord.
- ActiveRecord - похоже на то, что происходило в LINQ2SQL и LINQ2Entities. Существует база данных и мы с помощью специального шаблона генерируем нужные нам классы C#. Далее их используем.
- SimpleRepository - более простой и в тоже время элегантный сценарий. Вы определяете строку подключения к пустой базе данных, определяете класс с свойствами, которые нужно хранить в базе и ... все!. Все готово для работы.
В данном посте хочу рассказать про второй подход, поскольку именно он меня поразил меня элегантностью, хоть и имеются некоторые минусы.
Приведу сразу пример:
Все что нужно для работы с базой. SubSonic самостоятельно генерирует таблицу и добавляет в нее запись.
Но магия на этом не заканчивается. Допустим в процессе разработки нужно добавить новые поля в нашу структуру... И все что нам нужно сделать ... - это просто добавить свойство в наш класс.
При этом SubSonic автоматически добавит нужные поля в таблицу и добавит запись (при этом старые записи остаются в полной сохранности). Данная возможность обеспечивается благодаря использованию С# Reflection. На данный момент я заметил только один недостаток при работе с этим сценарием - это невозможность определить зависимости между таблицами. В этом случае приходится использовать ActiveRecord (о нем я рассказу позднее).
Более подробно о работе с SimpleRepository можно узнать в примерах на сайте проекта.
Несколько полезных ссылок:
http://www.codeproject.com/KB/database/SubSonic.aspx
http://www.codeproject.com/KB/database/SubSonic.aspx
ага, я тобі про подібні штуки на Ruby on Rails вже розказував )
ОтветитьУдалитьНеудобства возникали самые разные, начиная от привязки к конкретное базе данных???
ОтветитьУдалитьэто говорит только о некомпетентности
мы при разработке используем именно Entity Framework и базы меняем как перчатки прям на ходу (не базы конкретно MSSQL а смена базы MSSQL на MySql)
Ну так об этом и речь. Привязка только к MSSQL является неудобным.
ОтветитьУдалить