Beispiel #1
0
        public void Update(CourierBusinessLogic.Models.DeliveryAct act)
        {
            try
            {
                if (isDisconnected)
                {
                    RestoreFromCache();
                }

                using (var context = new CourierDatabase())
                {
                    DeliveryAct element = context.DeliveryActs.FirstOrDefault(rec => rec.Id == act.Id);

                    if (element == null)
                    {
                        throw new Exception("Элемент не найден");
                    }

                    element.CourierFIO   = act.CourierFIO;
                    element.DeliveryType = act.DeliveryType.Value;
                    element.DeliveryDate = act.DeliveryDate;
                    element.PromoEffects = act.PromoEffects;

                    context.SaveChanges();

                    List <DeliveryAct> list         = cache.Elements;
                    DeliveryAct        cacheElement = list.FirstOrDefault(rec => rec.Id == act.Id);

                    cacheElement.CourierFIO   = act.CourierFIO;
                    cacheElement.DeliveryType = act.DeliveryType.Value;
                    cacheElement.DeliveryDate = act.DeliveryDate;
                    cacheElement.PromoEffects = act.PromoEffects;

                    cache.Elements = list;
                }
            }
            catch (DbUpdateException)
            {
                isDisconnected = true;

                List <DeliveryAct> list    = cache.Elements;
                DeliveryAct        element = list.FirstOrDefault(rec => rec.Id == act.Id);

                if (element == null)
                {
                    throw new Exception("Элемент не найден");
                }

                element.CourierFIO   = act.CourierFIO;
                element.DeliveryType = act.DeliveryType.Value;
                element.DeliveryDate = act.DeliveryDate;
                element.PromoEffects = act.PromoEffects;

                cache.Elements = list;

                throw new Exception("При работе с базой данных произошла ошибка. Изменения сохранены в кэш");
            }
        }
Beispiel #2
0
        public void Create(CourierBusinessLogic.Models.DeliveryAct act)
        {
            try
            {
                if (isDisconnected)
                {
                    RestoreFromCache();
                }

                using (var context = new CourierDatabase())
                {
                    DeliveryAct element = new DeliveryAct();
                    context.DeliveryActs.Add(element);

                    if (act.Id.HasValue)
                    {
                        element.Id = act.Id.Value;
                    }
                    else
                    {
                        Random rnd = new Random();
                        while (true)
                        {
                            element.Id = rnd.Next(0, int.MaxValue);
                            if (context.DeliveryActs.FirstOrDefault(rec => rec.Id == element.Id) == null)
                            {
                                break;
                            }
                        }
                    }

                    element.CourierFIO   = act.CourierFIO;
                    element.DeliveryType = act.DeliveryType.Value;
                    element.DeliveryDate = act.DeliveryDate;
                    element.PromoEffects = act.PromoEffects;

                    context.SaveChanges();

                    List <DeliveryAct> list = cache.Elements;
                    list.Add(element);
                    cache.Elements = list;
                }
            }
            catch (DbUpdateException)
            {
                isDisconnected = true;

                DeliveryAct element = new DeliveryAct();

                if (act.Id.HasValue)
                {
                    element.Id = act.Id.Value;
                }
                else
                {
                    Random rnd = new Random();
                    while (true)
                    {
                        element.Id = rnd.Next(0, int.MaxValue);
                        if (cache.Elements.FirstOrDefault(rec => rec.Id == element.Id) == null)
                        {
                            break;
                        }
                    }
                }

                element.CourierFIO   = act.CourierFIO;
                element.DeliveryType = act.DeliveryType.Value;
                element.DeliveryDate = act.DeliveryDate;
                element.PromoEffects = act.PromoEffects;

                List <DeliveryAct> list = cache.Elements;
                list.Add(element);
                cache.Elements = list;

                throw new Exception("При работе с базой данных произошла ошибка. Изменения сохранены в кэш");
            }
        }