Пример загрузки объекта данных по представлению, его изменения и сохранения

В данном примере выполняются следующие действия:

  • Берется первичный ключ какого-либо из имеющихся в БД объектов класса CDDA.
  • Создается новый экземпляр класса CDDA, ему присваивается этот первичный ключ.
  • Производится загрузка свойств этого экземпляра посредством сервиса данных. Значения загружаются из записи, соответствующей установленному первичному ключу. При загрузке применяется представление.
  • Выполняется изменение свойств и сохранение объекта.
Console.WriteLine("2. How to load dataobject in specific view, change it\'s property, then persist. Object status and loading state.");

IDataService dataService = DataServiceProvider.DataService;

// Инициализация вспомогательного объекта, с помощью которого мы получим первичный ключ произвольного объекта
// заданного типа.
OrmSample ormSample = new OrmSample(dataService);
object primaryKey = ormSample.GetSomeObjectPrimaryKey(typeof(CDDA));

// Для загрузки объекта данных необходимо создать новый экземпляр объекта данных, присвоить ему имеющийся первичный ключ, а затем
// передать его в метод LoadObject сервиса данных. При этом запись с таким первичным ключом должна существовать в БД.
CDDA cdda = new CDDA();
cdda.SetExistObjectPrimaryKey(primaryKey);

// Кроме самого экземпляра, свойства которого необходимо загрузить, в метод LoadObject переадается представление.
// Представление - это набор свойств объекта. Представления можно создать в Flexberry, либо с помощью атрибута ViewAttribute.
// В данном случае представление определяет, какие свойства будут загружены.
dataService.LoadObject(CDDA.Views.CDDA_E, cdda);

// После загрузки статус объекта (cdda.GetStatus()) равен ObjectStatus.UnAltered. После вызова следующей строки он изменится на ObjectStatus.Altered.
// Изменять можно только загруженные свойства. Иначе при сохранении объекта получим ошибку.
cdda.Name = "Blablabla " + DateTime.Now;

Stopwatch stopwatch = new Stopwatch();
stopwatch.Start();

// Сохранение объекта. Обновляются только загруженные свойства.
dataService.UpdateObject(cdda);
            
stopwatch.Stop();
Console.WriteLine("Time taken for persistence: {0} ms.", stopwatch.ElapsedMilliseconds);