Особенности создания объекта данных на основе существующего
Прототипизация - создание объекта данных на основе другого.
Методы для прототипизации DataObject
Для прототипизации DataObject существует метод Prototyping.
/// <summary>
/// Прототипизировать
/// </summary>
/// <param name="withDetails">с детейлами или без</param>
public virtual void Prototyping(bool withDetails)
Также существует перегрузка данного метода без параметров (в этом случае будет просто произведён вызов метода Prototyping(true)).
Прототипизация DataObject
При прототипизации происходят следующие действия:
- сбрасывается значение первичного ключа объекта (генерируется новое);
- статус объекта изменяется на
ObjectStatus.Created; - состояние загрузки объекта устанавливается в
LoadingState.NotLoaded; - вызывается метод InitDataCopy.
Если переданный параметр withDetails имеет значение true, то прототипизация будет выполнена и для всех детейлов.
Примечания по протитопизации
- Получить первичный ключ объекта, который он имел до прототипизации, можно через свойство
PrototypeKey. - Очистка свойства
PrototypeKeyпроисходит при вызове методаClearPrototyping(если вызов был произведён без параметров или значение параметра былоtrue, то соответствующее свойство будет очищено и у детейлов). - Вызов метода
ClearPrototyping(true)также происходит при сохранении объекта через SQLDataService. - Узнать, был ли объект прототипизирован можно через свойство
Prototyped. - При выполнении дочитки объекта сервис данных будет осуществлять вычитку свойств прототипизированного объекта, используя в качестве первичного ключа
PrototypeKey(но при выполнении UpdateObject в БД будет создан новый объект).