Компонент доступа к БД/ Обновление объекта

Обновление объекта

     Для обновления записи объекта object в базе данных необходимо:

  • создать объект сущности
  • создать объект шлюза к базе данных на основе этого объекта (можно воспользоваться имеющимся шлюзом, если он был создан на основе объекта того же типа)
  • выбрать для обновления нужные поля, если нужно обновить не все поля
  • вызвать один из методов UpdateObject(par) или UpdateObject(par,object)

     Значение параметра «par» равно 1, если обновляются все поля и равно 2, если обновляются только выбранные поля.

     Рассмотрим обновление записи подробно на примере.

     Создаем экземпляр класса нужной сущности.

Employee employee = new Employee();
employee.EmployeeID=25;
employee.BirthDate = new DateTime(1985, 11, 24);

     Создаем экземпляр объекта шлюза к базе данных dbg

DataBaseGate dbg = new DataBaseGate(employee, cn);

     Компонент ORM «Dolphin» имеет два режима обновления объекта. В первом режиме обновляются все поля объекта. При этом, если поле объекта не заполнено, то в базу данных запишется значение null. Для обновления в этом режиме достаточно вызвать метод UpdateObject(1) объекта dbg с параметром par равным 1.

//обновление всех полей объекта employee.
cn.Open();
dbg.UpdateObject(1);
cn.Close();

     Второй режим обновления дает возможность обновить только нужные поля, не изменяя другие. Для этого перед обновлением эти поля должны быть выбраны методом «dbg.AddFieldForUpdate(Field)» объека «dbg». При этом необходимо также добавить все поля, являющиеся первичными ключами.

//обновление только поля «BirthDate».
dbg.AddFieldForUpdate(Employee.Columns.BirthDate);
//также необходимо добавить поле первичного ключа
dbg.AddFieldForUpdate(Employee.Columns.EmployeeID);
//обновление выбранных полей
cn.Open();
dbg.UpdateObject(2);
cn.Close();

     Если используется существующий объект dbg, созданный на основе объекта того же класса, то нужно воспользоваться методом UpdateObject(par,employee)

Employee employee1 = new Employee();

employee1.EmployeeID=26;
employee1.BirthDate = new DateTime(1985, 11, 24);
//обновление только поля «BirthDate»;
dbg.AddFieldForUpdate(Employee.Columns.BirthDate);
//также необходимо добавить ключевое поле;
dbg.AddFieldForUpdate(Employee.Columns.EmployeeID );
cn.Open();
dbg.UpdateObject(2,employee1);
cn.Close();

     Обработка ошибок.В случае ошибки поле «Status» объекта «dbg» получит значение false, в поле «message» запишется информация об ошибке.

if (!dbg.Status)
        MessageBox.Show(dbg.message);

     Текст запроса можно получить методом GetCommandString().

dbg.GetCommandString()