• Microsoft .NET
  • ASP.NET
  • Руководство по Catharsis - часть 3: быстрая разработка приложений

Руководство по Catharsis - часть 3: быстрая разработка приложений - Автоматическое создание сетевой инфраструктуры

ОГЛАВЛЕНИЕ

Автоматическое создание сетевой инфраструктуры

База данных, создающая сценарий для решения Firm.SmartControls, в действительности содержит 2 таблицы, соответствие между которыми еще не установлено, поэтому одна из них будет использоваться в качестве примера того, как добавлять новый объект.



‘Клиент’ будет новым объектом. (Он будет добавлен в пространство имен Страхование).

Перед добавлением нового объекта при помощи Руководства необходимо включить пакет Руководства. Щелкните мышкой по Tools (Инструменты) -> Guidance Package Manager (диспетчер пакета руководства)



Щелкните мышкой по Включить/выключить пакеты в появившемся диалоговом окне, выберите ProjectBase.Guidance (руководство) и нажмите на OK.



Закройте следующие два диалоговых окна, которые появятся, так как пока они не нужны.

Учтите, что если вам нужно добавить полную сетевую инфраструктуру, лучше всего ее добавить с помощью Объекта (или Сетевого проекта). Также можно ее добавить в DataLayer (слой данных), но он не позволяет добавлять элементы графического пользовательского интерфейса, которые требуются в этом экземпляре.

Каталог, в который добавляется новый объект, станет частью пространства имен для этого нового объекта. Если нужно, чтобы объект был в новом пространстве имен, вы должны создать каталог в проекте объекта и добавить объект в этот каталог, или же вы можете добавить объект в существующий каталог, как будет сделано в данном случае, так как нужно, чтобы новый объект был в пространстве имен Страхование.

Щелкните правой кнопкой мыши по папке и выберите "(Вновь) создать полную сетевую инфраструктуру" из меню. ‘(Вновь)’ означает, что если объект уже существует в каталоге, файлы будут перезаписаны новыми пустыми классами скелета, что позволяет отменить код или исправить ошибки.

"Полный сетевой" означает, что файлы классов скелета будут добавлены в каждый проект (даже в тестовые модули).
Если вы выберете "(Вновь) создать проект - (объект, организация, стандартный, тесты)" – никакие файлы в моделях, контроллерах и веб-проектах не будут добавлены (или изменены). Это подходит для случаев, когда не нужны элементы графического пользовательского интерфейса.

Пространство имен нового объекта должно быть Firm.SmartControls.Entity.Insurance.Client, поэтому необходимо щелкнуть по каталогу Страхование, как показано на рисунке, чтобы создать сетевую инфраструктуру при помощи Руководства.



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



Введите имя нового объекта в диалоговом окне. Вы можете добавить до трех дополнительных свойств. В SQL Server 2005 были столбцы таблицы InsuranceClient (клиент страхования), поэтому можно добавить первые три, Code (код), Name (имя) и BankCode (код банка). Руководство автоматически выполнит проверки с целью обеспечения того, что код уникален (эту функцию можно удалить, если она не нужна). Добавление свойств здесь сокращает объем работы, которую придется выполнять впоследствии, но можно добавить только типы значений – например, строковое свойство ‘имя’, нельзя добавлять объектные типы – например, внешний ключ, ссылающийся на другую таблицу, такую как Country (страна).

Предоставляется пространство имен, так как оно определяется тем, где вы добавили объект в решение. Тип объекта в этом случае должен быть постоянный. Это создаст скелет для объекта организации, который не имеет предков для типа организации (он является производным непосредственно от постоянного объекта). Другие типы позволяют повторно использовать ранее реализованную функциональность.

Второй и третий варианты для Списков кодов – вы можете выбрать ‘простой’ или ‘отдельный объект’. Сначала необходимо пояснить, что такое Список кодов. Объекты списка кодов часто используются для заполнения комбинированных списков, позволяющих пользователю выбирать один вариант из набора заранее заданных вариантов. Таким образом, к примеру,  можно отобразить все страны в Евросоюзе, другой хороший пример – женский и мужской пол. Еще одно общее свойство объектов списка кодов заключается в том, что данные статические, и поэтому не возникнет необходимости добавлять или удалять объекты данного типа. Например, пол никогда не потребует больше вариантов, чем мужской и женский.

Базовые классы дают объектам Списка кодов код и имя, поэтому для пола имя может быть «мужской» и код может быть M. Это простые объекты, так как не требуется никакая дополнительная информация. Поэтому использование варианта для простого списка кодов подходит для чего-то вроде пола или страны. Если вам нужен простой объект, такой как пол, можно использовать вариант ICodeList. В этом случае вам не нужно ничего реализовывать, ваше новое свойство ICodeList будет работать сразу же, без какого-либо написания дополнительного кода.

Каркас также дает возможность создавать список кодов и позволяет расширять объект за счет дополнительной информации. Например, валюта может иметь объект с именем «доллар» и кодом ‘USD’, но может потребоваться добавить столбец для субъединиц и дать ему значение ‘центы’ или ‘c’. Если нужно расширить базовую функциональность списка кодов, можно использовать отдельный объект. В этом случае столбец в таблице базы данных должен хранить значение для субъединицы.

Отслеживаемый тип объекта такой же, как и постоянный тип, но создается дополнительный код, позволяющий вести контрольный журнал для объекта. Если вам нужно отслеживать, когда объект изменяется, кто изменил его, и в каком состоянии он находится, это лучший вариант.  



Нажмите «Завершить», и спустя некоторое время все файлы будут автоматически созданы, и появится всплывающее окно, которое сообщит о том, что вы должны делать дальше:



1) Следуйте этим указаниям и откройте файл Str.Controller.cs и добавьте выделенную строку:



2) Теперь откроется файл menu.config (меню.настройки)



Нужно добавить выделенный код:

Он добавляется на том же уровне, что и Агент, поэтому он появится в качестве брата или сестры этого узла в дереве Навигации.


 
Попытка использования этого нового элемента в меню навигации вызовет ошибку, так как таблица базы данных еще не была назначена через NHibernate: