![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Описание скаффолдеров
Итак, я не буду тут приводить код всех используемых мною скаффолдеров, только опишу здесь их параметры для запуска. Но прежде расскажу о ManageAttribute. Эти атрибуты присваиваются тем полям, которые мы хотим в дальшейшем использовать как маркеры для генерации определенного кода. Например, атрибут LangColumn – это атрибут, указывающий на то, что данное поле является «языковым». Тем самым мы можем сгенерировать ModelView и с учетом их тоже. · IRepository (Model). Мы уже с ним знакомы, он создает интерфейс IRepository и вносит CRUD-методы для заданного типа: Scaffold IRepository ModelName · Proxy (Model). Создает Proxy partial class. Если задан параметр Lang: $true, то скаффолдер ищет языковую модель данных ModelName+”Lang” и добавляет языковые поля в partial class. Scaffold Proxy ModelName -Lang: $true · SqlRepository (Model). Создает реализацию CRUD-методов класса ModelName. Также имеет параметр Lang для создания приватного метода, работающего с языковыми полями. Scaffold SqlRepository ModelName -Lang: $true · ProviderRepository (Model). Запускает три вышеперечисленных скаффолдинга за один раз. Scaffold ProviderRepository ModelName -Lang: $true · Model (Web). Создает модель ModelNameView в Models/ViewModels и создает обработчик Automapper в Mappers/MappersCollection.cs. После этого во View-классе необходимо прописать управляющие атрибуты для создания контроллера и Index/Edit view: o ShowIndex – это поле будет отображено в таблице Index o PrimaryField – поле ID o CheckBox – для этого поля будет создан элемент ввода CheckBox o DropDownField – для этого поля будет создан элемент ввода DropDownField o HiddenField – скрытое поле o HtmlTextField – элемент ввода textarea, помеченный классом htmltext o RadioField – поле c радио-кнопками (на практике практически не использовалось) o TextAreaField – элемент ввода textarea o TextBoxField – обычное текстовое поле ввода Scaffold Model ModelName · SelectReference (Web). Создает во view-классе зависимость один-ко-многим, т.е. элемент выбора. Например, если создается город (City) с принадлежностью к штату (State), то при создании города указывается выпадающий список штатов, задающий значение StateID. Для этого необходимо использовать SelectReference, который добавит необходимый код к CityView: Scaffold SelectReference City State
· Controller (Web). Создает контроллер для данного ModelName типа. Дополнительно генерирует и Index\Edit View. Параметрами являются: o Area (по умолчанию – нет), создает контроллер в определенном Area o Paging (по умолчанию – false), использует или не использует постраничный вывод o Lang (по умолчанию – false), генерирует код с использованием языковых настроек Scaffold Controller ModelName –Area: Admin –Paging: $true –Lang: $true · IndexView\EditView (Web). Создает просмотр списка или редактирование объекта. Дополнительные параметры - те же, что и у Controller: o Area (по умолчанию – нет), создает контроллер в определенном Area o Paging (по умолчанию – false), использует или не использует постраничный вывод o Lang (по умолчанию – false), генерирует код с использованием языковых настроек Scaffold IndexView ModelName –Area: Admin –Paging: $true –Lang: $true Scaffold EditView ModelName –Area: Admin –Paging: $true –Lang: $true Итог Скаффолдинг – это не панацея, но это хороший инструмент, с помощью которого можно быстро создать необходимый код. Написанные классы позволяют быстро начать управлять содержимым базы данных, и избавляют от множества ручной рутинной работы. Действия при создании новой таблицы (объекта) будут следующие: · Описать таблицу(ы) с полями в БД · Перенести ее в DBContext.dbml · Запустить ProviderRepository для необходимых таблиц, убрать лишние методы · Запустить Model для необходимых таблиц · Прописать управляющие атрибуты во view-классах, убрать лишние поля · Создать контроллеры в админке · Допилить напильником сложные поля (например, загрузку файлов) Всё это выполняется сразу на несколько таблиц, если это старт проекта или большой патч. У меня иногда генерировалось до 20-30 таблиц, это заняло около 5 минут, но без этого пришлось бы провозиться целый день. Посмотрите на реализацию скаффолдингов, вы сможете больше понять внутренние особенности программы и ее структуру.
|