Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Описание скаффолдеров






Итак, я не буду тут приводить код всех используемых мною скаффолдеров, только опишу здесь их параметры для запуска. Но прежде расскажу о 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 минут, но без этого пришлось бы провозиться целый день.

Посмотрите на реализацию скаффолдингов, вы сможете больше понять внутренние особенности программы и ее структуру.







© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.