Менеджер (из пространства имен Ultima.Dictionaries) предназначен для работы со справочниками.
Интерфейс менеджера IDictionaryManager реализует следующие методы:
•GetRecord(Type dictionaryType, long id, bool withInnerObjects = false) – возвращает экземпляр записи справочника с указанным идентификатором:
▪dictionaryType – тип справочника;
▪id – идентификатор записи справочника;
▪withInnerObjects – если значение параметра установлено в true, будут загружены внутренние объекты записи справочника. Внутренними объектами записи справочника являются, например, развязочные таблицы и вложенные справочники. В случае указания на необходимость загрузки внутренних объектов данные связанных с записью справочника развязочных таблиц и вложенных справочников будут загружены целиком. В противном случае будут загружены лишь идентификаторы;
•GetRecords(Type dictionaryType, LambdaExpression selectExpression, IDList records) – возвращает таблицу записей справочника с указанными идентификаторами:
▪dictionaryType – тип справочника;
▪selectExpression – выражение, описывающее значения каких из колонок справочника будут загружены. Если в качестве значения параметра указать null – для указанных записей справочника будут загружены значения всех колонок;
▪IDList – список идентификаторов записей справочника. Если в качестве значения параметра указать null – будут загружены все записи справочника;
•GetRecords(Type dictionaryType, LambdaExpression selectExpression, LambdaExpression filterExpression) – возвращает таблицу записей справочника, удовлетворяющих условию фильтра:
▪dictionaryType – тип справочника;
▪selectExpression – выражение, описывающее значения каких из колонок справочника будут загружены;
▪filterExpression – выражение, описывающее какие из записей справочника будут загружены (подробнее в разделе Фильтры);
•GetLookup(Type dictionaryType, IDList records = null) – возвращает таблицу записей справочника с указанными идентификаторами, содержащую только lookup-колонки (свойства справочника с установленным флагом LookUp, а если таковых нет, то перечисленные в DisplayFormat свойства):
▪dictionaryType – тип справочника;
▪IDList – список идентификаторов записей справочника. Если в качестве значения параметра указать null – будут загружены все записи справочника;
•GetLookup(Type dictionaryType, LambdaExpression filterExpression) – возвращает таблицу записей справочника, удовлетворяющих условию фильтра, и содержащую только lookup-колонки:
▪dictionaryType – тип справочника;
▪filterExpression – выражение, описывающее какие из записей справочника будут загружены (подробнее в разделе Фильтры);
•NewRecord(Type dictionaryType, IDictionary<string, object> parameters = null, IDictionaryRecord template = null) – создает новую запись справочника и передает ее обработчику BeforeCreate:
▪dictionaryType – тип справочника;
▪parameters – список параметров для новой записи (опционально);
▪template – начальное значение для новой записи (опционально);
•SaveRecord(Type dictionaryType, IDictionaryRecord record, params ILinkTable[] linkTables) – сохраняет запись справочника:
▪dictionaryType – тип справочника;
▪record – сохраняемая запись справочника;
▪linkTables – данные развязочных таблиц для сохранения;
•SaveRecords(Type dictionaryType, IDictionaryTable records) – сохраняет записи справочника:
▪dictionaryType – тип справочника;
▪records – таблица сохраняемых записей справочника;
•SaveRecords(params IEntity[] records) – сохраняет записи справочника:
▪records – сохраняемые записи справочника;
•SaveRecords(RecordSet recordSet) – сохраняет записи справочника:
▪recordSet – набор (контейнер) сохраняемых записей справочника;
•SaveAndGetRecord(Type dictionaryType, IDictionaryRecord record) – сохраняет запись справочника и затем получает ее из базы данных, возвращает копию загруженной записи:
▪dictionaryType – тип справочника;
▪record – сохраняемая запись справочника;
•DeleteRecord(Type dictionaryType, long id) – удаляет указанную запись справочника:
▪dictionaryType – тип справочника;
▪record – идентификатор удаляемой записи справочника;
•CloneRecord(Type dictionaryType, long id) – клонирует указанную запись справочника:
▪dictionaryType – тип справочника;
▪record – идентификатор клонируемой записи справочника.
[Import] private IDictionaryManager DictionaryManager { get; set; }
var user = DictionaryManager.NewRecord<User>(); DictionaryManager.SaveRecord(user); |
Класс RecordSet (из пространства имен Ultima) – контейнер записей для сохранения:
•AddTask(long printFormId, long copies = 1, IDictionary<string, object> parameters = null) – добавляет задание печати печатной формы, не связанной с каким либо объектом:
▪DictionaryRecords – коллекция записей справочника;
▪LinkRecords – коллекция записей развязочной таблицы;
▪Documents – коллекция документов;
▪DictionariesTables – коллекция таблиц справочников;
▪LinkTables – коллекция развязочных таблиц.
Интерфейс IEntityExtensions (из пространства имен Ultima.EditableObjects) реализует расширенные методы интерфейса IEntity – единого интерфейса классов объектов метаданных (справочников, документов и т.д.) – и позволяет получить исходные значения свойств записи справочника:
•GetOriginalValue<TEntity, TResult>(this TEntity entity, Expression<Func<TEntity, TResult>> getExpr) – возвращает исходное значение указанного свойства:
▪TEntity – тип объекта;
▪TResult – тип результата;
▪entity – объект;
▪getExpr – выражение получения свойства вида x => x.Name;
•IsPropertyChanged<TEntity, TResult>(this TEntity entity, Expression<Func<TEntity, TResult>> getExpr) – возвращает true, если значение указанного свойства было изменено:
▪TEntity – тип объекта;
▪TResult – тип результата;
▪entity – объект;
▪getExpr – выражение получения свойства вида x => x.Name;
•RejectPropertyChanges<TEntity, TResult>(this TEntity entity, Expression<Func<TEntity, TResult>> getExpr) – возвращает указанному свойству исходное значение:
▪TEntity – тип объекта;
▪TResult – тип результата;
▪entity – объект;
▪getExpr – выражение получения свойства вида x => x.Name;
•SetPropertyValues(this IEntity entity, IDictionary<string, object> propertyValues) – позволяет задать значения скалярных свойства:
▪entity – объект;
▪propertyValues – набор значений.
long userId = 1; var user = DictionaryManager.GetRecord<User>(userId); user.Name = user.Name + "Junior";
var currentValue = user.Name; // текущее (измененное) значение свойства var originalValue = user.GetOriginalValue(x => x.Name); // исходное значение user.IsPropertyChanged(x => x.Name); // вернет true user.RejectPropertyChanges(x => x.Name); // вернет свойству его исходное значение |