Читаем Дефрагментация мозга. Софтостроение изнутри полностью

name ="Domain.Engine.FiscalYear" table ="FISCAL_YEAR" schema ="MYAPP">

name ="Id" access ="property" column ="NIFISCAL_YEAR">

class ="native">

name ="sequence">MYAPP.SEQ_FISCAL_YEAR

name ="Version" column ="VERSION" type ="int" access ="property" />

name ="Periods" table ="MYAPP.PERIOD" inverse ="true" lazy ="true" cascade ="none">

column ="NI_FISCAL_YEAR" />

class ="Domain.Engine.Period" />

name ="EntityRegistry" class ="Domain.Core.EntityRegistry" unique ="true">

name ="NI_ENTITY_REGISTRY" not-null ="false" />

name ="Name" access ="property">

name ="NAME" not-null ="false" />

name ="Granularity" access ="property">

name ="GRANULARITY" not-null ="true" />

name ="FromDate" access ="property">

name ="FROM_DATE" not-null ="true" />

name ="ToDate" access ="property">

name ="TO_DATE" not-null ="true" />

name ="Closed" access ="property" type ="YesNo">

name ="CLOSED" not-null ="true" />

name ="CreatedBy" access ="property">

name ="CREATED_BY" not-null ="false" />

name ="CreatedDate" access ="property" type ="timestamp">

name ="CREATED_DATE" not-null ="false" />

name ="LastModifiedBy" access ="property">

name ="LAST_MODIFIED_BY" not-null ="false" />

name ="LastModifiedDate" access ="property" type ="timestamp">

name ="LAST_MODIFIED_DATE" not-null ="false" />

Слой веб-служб и интерфейсов доступа (ServiceStack)

Генерируемые для слоя веб-служб C#-файлы предназначены для создания двух сборок: собственно служб и интерфейсов к ним, используемых клиентами.

Рис. 25. Классы, реализующие службы доступа к объектам домена

Рис. 26. Класс службы сохранения объектов

Интерфейсы доступа к службам также содержат описания перечислимых типов с локализацией, классы DTO для передачи состояния между программой-клиентом и доменом, классы для непосредственного доступа к вызовам служб.

Рис. 27. Перечисляемый тип слоя веб-служб

Рис. 28. Классы вызова специфицированных методов

Рис. 29. Классы вызова веб-служб, касающихся «финансового года»

Рис. 30. Класс адаптера для работы с объектом «Финансовый год»

Рис. 31. Класс адаптера для работы с коллекцией объектов «Финансовый год»

Работать с DTO и коллекциями не слишком комфортно, проявляется много ненужных деталей. Но если обернуть операции с DTO адаптерами, то код становится гораздо более читаемым и коротким.

Пример работы с DTO

CurrencyDTO curr1 = new CurrencyDTO;

curr1.Code = "RUR";

curr1.Name = "Currency 1";

UnitOfWorkDTO uow = new UnitOfWorkDTO;

uow.Save(curr1);

PersistenceRequest prq1 = new PersistenceRequest;

prq1.UnitOfWork = uow;

PersistenceResponse prr1 = client.Post("/Persistence", prq1);

Assert.IsFalse(prr1.CommitResult.HasError, prr1.CommitResult.Message);

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже