Здравствуйте, LWhisper, Вы писали: LW>Все дороги идут к T4. Думаю, это правильный путь.
В целом, наверное, да. Как минимум — он достаточно изучен и описан, по сравнению со всем остальным.
В целом для этой цели еще используют Razor, но я не уверен на сколько там готова инфраструктура — не убъете ли вы больше времени на возню с окружением.
Однако, всё же подумайте еще раз о том, как вы будете хранить модель — исходные данные для генерации.
Ну и в целом, могу порекомендовать такие ссылки:
Блог Oleg Sych с кучей нюансов T4
Единственное, как я понимаю, ныне живущее расширение для подсветки кода и худо-бедно работающего IntelliSense это tangible T4 Editor (вот его версия для 2015 студии). Имхо, самы большой недостаток T4 это именно отстутствие нормальной встроенной поддержки в редакторе VS. Именно из-за этого многие и начинают переходить на Razor, как мне кажется.
Ну и если у вас будет избыточно времени, можете посмотреть пару видео с доклада, который я делал на местной встрече разработчиков (качество записи — так себе) по использованию DSL Tools и T4 для схожей с вамшей задачей.
В настоящий момент в проекте есть большое количество модельных объектов, которые вручную описываются сторками и функциями для хранения и поиска оных в LocalDB.
Для большинства из них набор методов довольно тривиален: Create, Update, Delete, FindById, FindAll
Хочется автоматически их генерировать вместо того, чтобы набивать руками, постоянно ошибаясь и забывая добавить новый параметр при изменении схемы таблицы.
Подскажите какой-нибудь легковестный фреймворк с абсолютно свободной лицензией или просто наилучший способ это организовать.
Пока самое примитивное решение — вынести генерацию в отдельный EXE'ик и запускать его в Pre-build проекта. Но, возможно, есть более интеллектуальные решения?
Здравствуйте, LWhisper, Вы писали:
LW>Пока самое примитивное решение — вынести генерацию в отдельный EXE'ик и запускать его в Pre-build проекта. Но, возможно, есть более интеллектуальные решения?
мы именно так и делаем
тулзу написали на C#
1) либо придумайте некий формат описания данных, в тулзе парсите его и генерите что надо
2) либо описашите структуры в коде C#, затем их рефлекшеном помучайте. на свойства \ классы можно еще атрибуты повесить, чтобы кастомизировать генерируемый выхлоп
Re: [Visual Studio] Автогенерация SQL-процедур по описанию модел
Здравствуйте, LWhisper, Вы писали:
LW>Но, возможно, есть более интеллектуальные решения?
Особо интеллектуальных решений я не назову. Думаю, здесь почти всегда делается некий велосипед.
Вообще я бы разбил задачу кодогенерации на несколько частей.
Задание модели
Т.е. когда в какой-то форме описывается то, на основании чего мы будем производить генерацию. В качестве источника такой модели может быть всё, что угодно:
структура ваших классов + какие-нибудь атрибуты
структура базы
специальный язык (пусть даже просто XML-ка)
...
Исходя из вот этой фразы
Хочется автоматически их генерировать вместо того, чтобы набивать руками, постоянно ошибаясь и забывая добавить новый параметр при изменении схемы таблицы.
я подумал что вы за основу хотите брать изменения в базе. Честно говоря, не самый простой в реализации вариант. Или у вас другие мылсли на сей счет?
Генерация
Здесь обычно используют один из 2-х подходов: генерация на основе синтаксического дерева (или DOM), например как в CodeDOM, или просто обычные текстовые шаблоны.
Для генерации SQL, я видел решения только на основании шаблонов (конечно, DOM модели для SQL есть, например тот же T-SQL Script DOM, но использовать его для генерации... проще застрелиться, имхо).
Ну а решений на базе шаблонов — куча. Самый популярный, наверное, это T4, просто потому, что поддержка встроена в Visual Studio (а вот вне VS его не всегда удобно использовать).
Re[2]: [Visual Studio] Автогенерация SQL-процедур по описанию модел
Здравствуйте, Михаил Романов, Вы писали:
МР>Генерация МР>Здесь обычно используют один из 2-х подходов: генерация на основе синтаксического дерева (или DOM), например как в CodeDOM, или просто обычные текстовые шаблоны. МР>Для генерации SQL, я видел решения только на основании шаблонов (конечно, DOM модели для SQL есть, например тот же T-SQL Script DOM, но использовать его для генерации... проще застрелиться, имхо). МР>Ну а решений на базе шаблонов — куча. Самый популярный, наверное, это T4, просто потому, что поддержка встроена в Visual Studio (а вот вне VS его не всегда удобно использовать).
Все дороги идут к T4. Думаю, это правильный путь.
Re[4]: [Visual Studio] Автогенерация SQL-процедур по описанию модел
Здравствуйте, uzhas, Вы писали:
U>круто, мне понравилась тема с DSL tools + связка с T4 U>даже не слышал про такие возможности
Приятно, что смог кого-то заинтересовать.
На самом деле тема с Model Driven Architecture одно время была очень популярна. И Microsoft далеко не единственные, кто пытался её развить. У сообсщества Eclipse, есть Graphical Modeling Framework (GMF).
Но... можно честно признать, что она не взлетела.
Там много проблем, которые вылезают в реальном использовании, я вроде на последнем слайде даже их попытался обозначить (уже не помню просто).
Сама Microsoft, как я понимаю, более DSL Tools не развивает (точнее направление Modeling у них осталось, но там больше ориентация на UML и инструменты вокруг него). Немного печально, но имхо, такой инструмент применим далеко не везде. Для 90% заказных проектов (которые пишутся с 0 под конкретного заказчика) — поддержка собственного DSL слишком большая роскошь. А вот для какой-нибудь бизнес-платформы, (а'ля 1С) это мог бы быть довольно удобный механизм. Но таких продуктов не так много.