|
Страница 1 из 5 Данная статья демонстрирует то, как Catharsis может помочь в быстрой разработке трудоемких приложений корпоративного уровня.
Пример проекта Catharsis Catharsis - это мощный инструмент быстрой разработки приложений (RAD - Rapid Application Development), который использует набор лучших шаблонов разработки, составленных вокруг конкретной архитектуры используя MVC.
Используя Guidance, структура предлагает функциональность быстрой разработки приложений в трудоемких архитектурах корпоративного уровня. До того, как мы продолжим изучение примера, вам стоит ознакомиться с установкой Catharsis, описанной в предыдущей статье. Как только вы установите Catharsis, данная статья послужить следующим логическим шагом в получении больших познаний того, как данная структура может помочь вам в быстрой сборке сложных приложений. После прочтения данного документа, вам стоит перейти к практическому применению структуры, и следующая статья предложит пошаговую инструкцию использования структуры. Введение Пример решения содержит такие сущности, как Agent (Агент) и AgentContract (КонтрактАгента). В данной части мы рассмотрим то, как данные сущности интегрированы в структуру Catharsis. Давайте сначала исследуем сущности Insurance Agent (Страховой агент). Начнем мы с изучения таблицы базы данных для того, чтобы найти информацию, хранимую для страхового агента и затем исследуем слой данных и увидим то, как таблицы встраиваются в приложение. Здесь мы видим преобразование файла NHibernate и объекты доступа к данным (интерфейс DAO - Data Access Object) в решении. 
А вот скрипт создания таблиц баз данных: CREATE TABLE [dbo].[InsuranceAgent]( [InsuranceAgentId] [int] IDENTITY(1,1) NOT NULL, [Code] [nvarchar](150) NOT NULL, [IsInternal] [bit] NOT NULL, [Rating] [smallint] NOT NULL, [CommissionRate] [decimal](18, 10) NOT NULL, [CommissionPeak] [decimal](18, 2) NOT NULL, [CurrencyId] [smallint] NOT NULL, [CountryId] [smallint] NOT NULL, [GenderId] [tinyint] NOT NULL, [Started] [datetime] NOT NULL, [Finished] [datetime] NULL, CONSTRAINT [PK_InsuranceAgent] PRIMARY KEY CLUSTERED ( [InsuranceAgentId] ASC ) А это преобразование файла HNibernate для InsuranceAgent: <?xml version='1.0' encoding='utf-8' ?> <hibernate-mapping xmlns='urn:nhibernate-mapping-2.2' namespace='Firm.SmartControls.Entity.Insurance' assembly='Firm.SmartControls.Entity'> <class name='Agent' table='InsuranceAgent' lazy='true' > <id name='ID' column='InsuranceAgentId' > <generator class='native'></generator> </id> <property not-null='true' name='Code' /> <property not-null='true' name='IsInternal' /> <property not-null='true' name='Rating' /> <property not-null='true' name='CommissionRate' /> <property not-null='true' name='CommissionPeak' /> <property not-null='true' name='Started' /> <property not-null='false' name='Finished' />
<many-to-one name='Currency' column='CurrencyId' lazy='false' ></many-to-one> <many-to-one name='Country' column='CountryId' lazy='false' ></many-to-one> <many-to-one name='Gender' column='GenderId' lazy='false' ></many-to-one>
<bag name='Contracts' inverse='true' lazy='true' cascade='all-delete-orphan' > <key column='InsuranceAgentId' /> <one-to-many class='AgentContract' /> </bag> </class> </hibernate-mapping> Заметьте, что lazy="true" означает, что экземпляр объекта будет создан тогда, когда он необходим. Первые семь параметров, указанных в таблице преобразования, являются простым построением соответствий. Currency, Country и Gender являются соответствиями типа один-ко-многим. Это скорее ‘типы сущностей’, чем простые ‘типы значений’. Они обрабатываются в виде CodeLists в решении Catharsis. 
|