Класс записи справочника

При создании каждого справочника генерируется класс записи справочника. Его исходным описанием служит название справочника (Name), а списком его свойств – соответствующие свойства справочника.

Например, рассмотрим создание простого справочника DictionaryName со свойствами ID, Name и ReferenceID.

Класс модели предметной области, сгенерированный по этому описанию, выглядит следующим образом:

public partial class DictionaryName : IDictionaryRecord

{

 public long ID { get; set; }

 public string Name { get; set; }

 public long ReferenceID { get; set; }

}

Все классы записей справочников (и только они) реализуют интерфейс IDictionaryRecord. Соответственно можно получить перечень всех классов записей справочников, запросив кто реализует этот интерфейс:

public interface IDictionaryRecord : IEntity, IBusinessObject

{

 // Возвращает развязочные таблицы, связанные с записью справочника.

 IKeyValueStore<string, ILinkTable> LinkTables { get; }

 

 // Возвращает коллекции записей справочника, связанные с записью справочника.

 IKeyValueStore<string, IDictionaryTable> DictionaryLists { get; }

}

Каждому свойству справочника соответствует поле типа EditableValue<T>, где Т – один из указанных в метаданных типов:

private EditableValue<string>name; ///поле

 

public string Name ///свойство

{

 get { return name.Value; }

 set { name.Value = value; }

}

Также свойству может соответствовать коллекция типа DictionaryTable<T> (где Т тип элемента коллекции).

Пример использования:

[Import]

private IDictionaryManager DictionaryManager { get; set; }

 

// Получаем запись справочника.

var dictionaryRecord = DictionaryManager<DictionaryName>.GetRecord(10);

 

// Получаем значение свойства Name записи справочника.

var name = dictionaryRecord.Name;

 

// Получаем развязочную таблицу записи справочника.

var linkTable = dictionaryRecord.LinkTableName;