/// <summary> /// Пример явного включения операций работы с данными в заданные "извне" соединение и транзакцию. /// </summary> /// <remarks> /// Данный подход позволяет в ручном режиме контролировать те операции, которые попадают в соответствующую транзакцию, /// а также явно управлять транзакциями. /// </remarks> static void UsingExternalConnectionAndTransaction() { var ds = (SQLDataService)DataServiceProvider.DataService; var connection = new SqlConnection(ds.CustomizationString); using (connection) { if (connection.State != ConnectionState.Open) { connection.Open(); } using (SqlTransaction transaction = connection.BeginTransaction()) { var t = new Товар(); t.SetExistObjectPrimaryKey("27486786-648C-419B-B0BF-F8BA739ABF58"); ds.LoadObjectByExtConn(Товар.Views.ТоварL, t, true, false, new DataObjectCache(), connection, transaction); t.Цена = 999; var t2 = new Товар() { Название = "Стул", ЕдиницаИзмерения = "шт", Описание = "Опять мебель", Цена = 1345, КодТовара = 224 }; var p = new DataObject[] { t, t2 }; ds.UpdateObjectsByExtConn(ref p, new DataObjectCache(), true, connection, transaction); transaction.Commit(); Console.WriteLine("ОК"); } } }
/// <summary> /// Чтение объекта данных по первичному ключу и последующее удаление данного объекта данных из базы данных. /// </summary> /// <remarks> /// 1. Нужно исправить значение первичного ключа в коде на актуальное, чтобы вычитать реально существующий объект из базы данных /// 2. Если на соответствующий объект ссылаются объекты в базе данных, то объект может не удалиться, так как сработают ограничения целостности в базе данных. /// Такой случай подразумевает реализовацию каскадного удаления данных в бизнес-серверах. /// </remarks> static void DeleteObject() { try { var ds = (SQLDataService)DataServiceProvider.DataService; var t = new Товар(); //Требуется заменить значение первичного ключа на актуальное из базы данных. t.SetExistObjectPrimaryKey("27486786-648C-419B-B0BF-F8BA739ABF58"); ds.LoadObject(t); Console.WriteLine($"Название: {t.Название}\n"); t.SetStatus(ObjectStatus.Deleted); ds.UpdateObject(t); Console.WriteLine("Удален\n"); } catch (Exception e) { Console.WriteLine(string.Format("Ошибка: {0}\n", e.Message)); } }