Exemplo n.º 1
0
        /// <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("ОК");
                }
            }
        }
Exemplo n.º 2
0
        /// <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));
            }
        }