none
Не правильно записываю RRS feed

  • Вопрос

  • Добрый день!

    Подскажите пожалуйста где моя ошибка?

    var list = db.OrdersList.Where(f => f.Kod_orders == 113);
                    foreach (OrdersList t in list)
                    {
                        if (t.Count.ToString() != Request["value_" + t.Id_order])
                        {
                           var change = db.OrdersList.SingleOrDefault(g => g.Id_order ==3);
                            change.Count = 5;
                            db.SaveChanges();
                            return RedirectToAction("index", "Home", new { id = "Work_" + Request["value_" + t.Id_order]+"_ID_"+ t.Id_order });
                        }

    В итоге получаю ошибку при сохранении бд:

    Ошибка при запуске транзакции в соединении поставщика. Подробные сведения см. во внутреннем исключении.

    Где я ошибся?

    19 августа 2012 г. 13:23

Ответы

  • Спасибо, что откликнулись. Мне правда нужно было сделать не для одно случая, а для целого ряда. Тот код просто был для проверки. Но к сожалению не помог. Вышел из ситуации подругому. Итак вот код контроллера:

    var list = db.OrdersList.Where(f => f.Kod_orders == 113);
                    foreach (OrdersList t in list)
                    {
                        if (t.Count.ToString() != Request["value_" + t.Id_order])
                        {
                            ProdModel.ChangeCount(t.Id_order, Request["value_" + t.Id_order]);
                        }
                    }
                    return RedirectToAction("Detail", "Manage", new {id = 113});

    И модель:

     public void ChangeCount(int id, string NewCount)
            {
                var g = db.OrdersList.Single(d => d.Id_order == id);
                int f = Convert.ToInt32(NewCount);
                g.Count = f;
                db.SaveChanges();
            }

    После этого все отлично заработало 8)



    • Помечено в качестве ответа ZEONE 22 августа 2012 г. 9:43
    • Изменено ZEONE 22 августа 2012 г. 9:48
    22 августа 2012 г. 9:43

Все ответы

  • А что пишется в InnerException?
    19 августа 2012 г. 14:00
    Модератор
  • "New transaction is not allowed because there are other threads running in the session."
    19 августа 2012 г. 15:21
  • foreach (OrdersList t in list)

    в этот момент запускается транзакция которая вам мешает попробуйте переписать код по другому

    var list = db.OrdersList.Where(f => f.Kod_orders == 113);
    bool NeedSave=false;
                    foreach (OrdersList t in list)
                    {
                        if (t.Count.ToString() != Request["value_" + t.Id_order])
                        {
                           var change = db.OrdersList.SingleOrDefault(g => g.Id_order ==3);
                            change.Count = 5;
    NeedSave=true;
    break;
                           
                        }
    }
    if (NeedSave)
    {
     db.SaveChanges();
                            return RedirectToAction("index", "Home", new { id = "Work_" + Request["value_" + t.Id_order]+"_ID_"+ t.Id_order });
    }


    • Предложено в качестве ответа Abolmasov Dmitry 22 августа 2012 г. 6:38
    20 августа 2012 г. 5:09
  • Уважаемый пользователь, пожалуйста, не забывайте отмечать ответ, если он является решением вашей проблемы. Спасибо.


    Для связи [mail]

    22 августа 2012 г. 6:39
  • Спасибо, что откликнулись. Мне правда нужно было сделать не для одно случая, а для целого ряда. Тот код просто был для проверки. Но к сожалению не помог. Вышел из ситуации подругому. Итак вот код контроллера:

    var list = db.OrdersList.Where(f => f.Kod_orders == 113);
                    foreach (OrdersList t in list)
                    {
                        if (t.Count.ToString() != Request["value_" + t.Id_order])
                        {
                            ProdModel.ChangeCount(t.Id_order, Request["value_" + t.Id_order]);
                        }
                    }
                    return RedirectToAction("Detail", "Manage", new {id = 113});

    И модель:

     public void ChangeCount(int id, string NewCount)
            {
                var g = db.OrdersList.Single(d => d.Id_order == id);
                int f = Convert.ToInt32(NewCount);
                g.Count = f;
                db.SaveChanges();
            }

    После этого все отлично заработало 8)



    • Помечено в качестве ответа ZEONE 22 августа 2012 г. 9:43
    • Изменено ZEONE 22 августа 2012 г. 9:48
    22 августа 2012 г. 9:43