ASP.NET Web Form generation framework
Данный проект предназначен для упрощения разработки ПО, при использовании ASP.NET WebForms, MS SQL и компонент Ext.Net. Разработан и используется на нескольких проектах компании.
Выполняется проектирование БД в PowerDesigner, на выходе получаются скрипты для БД и генерируются исходные коды для работы с таблицами и представлениями. Формируются разные поля в соответствии с типами колонок и ссылками на другие таблицы/представления.
Для PowerDesigner 16.5 разработано расширение, которое добавляет таблицам, представлениям, колонкам и другим объектам дополнительные атрибуты, на основании этого генерируются исходные коды. Для реализации логики используются partial методы, внедренные в нужные места генерируемого кода. Справочные таблицы обычно не содержат дополнительной логики.
Пример приложения: https://GitHub.com/NATKazakhstan/AspWebGenSample
Wiki: https://github.com/NATKazakhstan/AspWebGen/wiki
Необходимые шаги:
- Установить Visual Studio 2017 с компонентами "ASP.NET и разработка Web-приложений", "Инструменты LINQ to SQL" (вкладка отдельные компоненты)
- Клонировать репозиторий AspWebGen в отдельную папку решения, например, AspWebGen.
- Скомпилировать Core.sln во Visual Studio 2017.
- Скомпилировать Tools.sln во Visual Studio 2017.
- Создать проект "Веб приложение ASP.NET (.NET Framework)" - .NET Framework 4.0 или выше.
В созданном проекте:
- Добавить ссылки на все проекты из Core.sln.
- Добавить ссылку на Microsoft.JScript.
- Установить nuget пакет Ext.NET 2.5.3.1 (совместимость с более старшей версией 3, 4 не производилась).
- Добавить модель LINQ to SQL с названием файла "DB.dbml".
- Скопировать из примера приложения файлы EmptyPage.aspx, MainPage.aspx, IFrameSite.Master, AutoCompleteHandler.ashx, DataSourceViewHandler.ashx, LinqToJavaScriptHandler.ashx.
- Скопировать из примера приложения настройки файла Web.Config, разделы: configSections, assemblyBinding, Nat.SqlDbInitializer, Nat.Initializer, Nat.WebReportManager.
После генерации исходных кодов из PowerDesigner включить новые файлы в проект, за исключением файлов из папок с названием, начинающимся с символа "_", они являются шаблонами.
Для использования файлов с расширением ".SDBML", которые обновляют модель данных DB.dbml в соответствии с генерированной моделью из PowerDesigner:
- В контекстном меню нажать "открыть с помощью"
- В открывшемся окне нажать "добавить"
- Указать программу AspWebGen\BuildTools\SyncDbmlByScript\SyncDbmlByScript.exe, нажать ОК
- Нажать "По умолчанию", ОК
После внесения изменений в модель и генерации исходных кодов для актуализации модели данных DB.dbml достаточно запустить файл с расширением ".SDBML" либо в папке с проектом на все таблицы/представления, либо с именем нужной таблицы/представления.
Необходимые шаги:
- Установить PowerDesigner 16.5
- Добавить расширения. Скопировать из директории репозитория "Extended Model Definitions" в установленную папку PD "C:\Program Files (x86)\Sybase\PowerDesigner 16\Resource Files\Extended Model Definitions" (предварительно PD закрыть, запускать от имени администратора)
- Создать модель "Physical Data Model" (PDM) и добавить расширение "UserControlsGenerator" - в меню Model/Extensions нажать "Attach an Extension", поставить галочку для "UserControlsGenerator".
- Создать Package, указать Code и Comment
- В нем создать таблицу, указать Code и Comment.
- Добавить необходимые колонки с указанием Code, Comment, DataType, Mandatory, ...
- У таблицы на вкладке "Генерация UserControls" выбрать одно из обязательных полей в атрибуте NameColumn.
- Обязательно добавить колонку RowVersion, тип данных timestamp, на вкладке "Генерация UserControls" убрать галочки GridViewVisible, DetailsViewVisible, FilterVisible, Логирование поля.
- У таблицы обычно и по умолчанию используется колонка id - идентификатор, инкрементируется базой данных, т.е. identity, и обычно не отображается, т.е. сняты галочки GridViewVisible, DetailsViewVisible, FilterVisible.
Code используется как название поля, проекта, класса и др. Comment и Name - названия для пользователей.
Генерировать исходные коды можно несколькими путями:
- Можно пользоваться стандартным вызовом из меню - Tools/Extended Generation, выбрать нужный пакет (Package) или таблицу/представление, указать путь к папке решения и OK.
- Или же в контекстном меню у таблицы/представления или пакета "Генерировать UserControls", указать путь к папке решения и ОК.
Пример созданой модели: https://GitHub.com/NATKazakhstan/AspWebGenSample