Класс EntityMapper

Сложный
PDF

Класс Terrasoft.Configuration.EntityMapper — это утилитный класс конфигурации, который находится в пакете FinAppLending продукта Lending. EntityMapper позволяет сопоставлять данные одной сущности (Entity) с другой по правилам, определенным в конфигурационном файле. Использование подхода сопоставления данных разных сущностей позволяет избежать появления однообразного кода.

В продукте Lending существует два объекта, содержащих одинаковые колонки. Это объекты Физ. лицо (Contact) и Анкета (AppForm). Также существует несколько деталей, относящихся к объекту Физ. лицо (Contact) и имеющих похожие детали, относящиеся к Анкета (AppForm). Очевидно, что при заполнении анкеты должна быть возможность по колонке Id объекта Физ. лицо (Contact) получить список всех его колонок и значений, а также список нужных деталей с их колонками и значениями, и сопоставить эти данные с данными, связанными с анкетой. После этого можно автоматически заполнить поля анкеты сопоставленными данными. Таким образом можно существенно уменьшить затраты на ручной ввод одинаковых данных.

Идея сопоставления данных разных сущностей реализована в следующих классах:

  • EntityMapper — реализует логику сопоставления.
  • EntityResult — определяет в каком виде вернется сопоставленная сущность.
  • MapConfig — представляет набор правил для сопоставления.
  • DetailMapConfig — используется для установки списка правил сопоставления деталей и связанных с ними сущностей.
  • RelationEntityMapConfig — содержит правила для сопоставления связанных сущностей.
  • EntityFilterMap — представляет из себя фильтр для запроса в базу данных.

Класс EntityMapper 

Пространство имен Terrasoft.Configuration.

Класс реализует логику сопоставления.

Методы 

virtual EntityResult GetMappedEntity(Guid recId, MapConfig config)

Возвращает сопоставленные данные для двух объектов Entity.

Параметры
recId GUID записи в базе данных.
config Экземпляр класса MapConfig, представляющий из себя набор правил сопоставления.
virtual Dictionary<string, object> GetColumnsValues(Guid recordId, MapConfig config, Dictionary<string, object> result)

Получает из базы данных главную сущность и сопоставляет ее колонки и значения по правилам, указанным в объекте config.

Параметры
recordId GUID записи в базе данных.
config Экземпляр класса MapConfig, представляющий из себя набор правил сопоставления.
result Словарь колонок и их значений уже сопоставленной сущности.
virtual Dictionary<string, object> GetRelationEntityColumnsValues(List<RelationEntityMapConfig> relations, Dictionary<string, object> dictionaryToMerge, string columnName, Terrasoft.Nui.ServiceModel.DataContract.LookupColumnValue entitylookup)

Получает из базы данных связанные сущности и сопоставляет их с основными сущностями.

Параметры
relations Список правил для получения связанных записей.
dictionaryToMerge Словарь с колонками и их значениями.
columnName Название родительской колонки.
entitylookup Объект, содержащий название и Id записи в базе.

Класс EntityResult 

Пространство имен Terrasoft.Configuration.

Класс определяет в каком виде вернется сопоставленная сущность.

Свойства 

Columns Dictionary<string, object>

Словарь с названиями колонок основной сущности и их значениями.

Details Dictionary<string, List<Dictionary<string, object>>>

Словарь названий деталей со списком их колонок и значений.

Класс MapConfig 

Пространство имен Terrasoft.Configuration.

Класс представляет набор правил для сопоставления.

Свойства 

SourceEntityName string

Название сущности в базе данных.

Columns Dictionary<string, object>

Словарь с названиями колонок одной сущности и сопоставляемыми колонками другой сущности.

DetailsConfig List<DetailMapConfig>

Список конфигурационных объектов с правилами для деталей.

CleanDetails List<string>

Список названий деталей для очистки их значений.

RelationEntities List<RelationEntityMapConfig>

Список конфигурационных объектов с правилами сопоставления связанных записей с главной сущностью.

Класс DetailMapConfig 

Пространство имен Terrasoft.Configuration.

Класс используется для установки списка правил сопоставления деталей и связанных с ними сущностей.

Свойства 

DetailName string

Название детали (для обеспечения уникальности экземпляра детали).

SourceEntityName string

Название сущности в базе данных.

Columns Dictionary<string, object>

Словарь с названиями колонок одной сущности и сопоставляемыми колонками другой сущности.

Filters List<EntityFilterMap>

Список конфигурационных объектов с правилами фильтрации для более точных выборок из базы данных.

RelationEntities List<RelationEntityMapConfig>

Список конфигурационных объектов с правилами сопоставления связанных записей с главной сущностью.

Класс RelationEntityMapConfig 

Пространство имен Terrasoft.Configuration.

Класс содержит правила для сопоставления связанных сущностей.

Свойства 

ParentColumnName string

Название родительской колонки, при нахождении которой будет срабатывать логика получения и сопоставления данных по сущности.

SourceEntityName string

Название сущности в базе данных.

Columns Dictionary<string, object>

Словарь с названиями колонок одной сущности и сопоставляемыми колонками другой сущности.

Filters List<EntityFilterMap>

Список конфигурационных объектов с правилами фильтрации для более точных выборок из базы данных.

RelationEntities List<RelationEntityMapConfig>

Список конфигурационных объектов с правилами сопоставления связанных записей с главной сущностью.

Класс EntityFilterMap 

Пространство имен Terrasoft.Configuration.

Класс представляет из себя фильтр для запроса в базу данных.

Свойства 

ColumnName string

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

Value object

Значение, с которым необходимо сравнение.