Особенности создания объекта данных на основе существующего

Прототипизация - создание объекта данных на основе другого.

Методы для прототипизации DataObject

Для прототипизации DataObject существует метод Prototyping.

/// <summary>
/// Прототипизировать
/// </summary>
/// <param name="withDetails">с детейлами или без</param>
public virtual void Prototyping(bool withDetails)

Также существует перегрузка данного метода без параметров (в этом случае будет просто произведён вызов метода Prototyping(true)).

Прототипизация DataObject

При прототипизации происходят следующие действия:

Если переданный параметр withDetails имеет значение true, то прототипизация будет выполнена и для всех детейлов.

Примечания по протитопизации

  • Получить первичный ключ объекта, который он имел до прототипизации, можно через свойство PrototypeKey.
  • Очистка свойства PrototypeKey происходит при вызове метода ClearPrototyping (если вызов был произведён без параметров или значение параметра было true, то соответствующее свойство будет очищено и у детейлов).
  • Вызов метода ClearPrototyping(true) также происходит при сохранении объекта через SQLDataService.
  • Узнать, был ли объект прототипизирован можно через свойство Prototyped.
  • При выполнении дочитки объекта сервис данных будет осуществлять вычитку свойств прототипизированного объекта, используя в качестве первичного ключа PrototypeKey (но при выполнении UpdateObject в БД будет создан новый объект).