При создании каждого справочника генерируется класс записи справочника. Его исходным описанием служит название справочника (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; |