none
Кот мышей не ловит RRS feed

  • Вопрос

  • Пытаюсь принимать от формы объект и передать его в Entity Framework на удаление - прямым путем не работает

     

     

            [HttpPost]
            public ActionResult Delete(Products p)
            {
                DataContext.Delete(p);
                return RedirectToAction("Index");
            }
    
    
    
    Приходится обходным:
            [HttpPost]
            public ActionResult Delete(int id, Products p)
            {
                DataContext.Delete(DataContext.Details(id));
                return RedirectToAction("Index");
            }
    
    
    В то время как с методом Edit все работает сразу

     

    31 марта 2011 г. 17:46

Ответы

  • Созданный объект не отслеживается в контексте. Его надо предварительно присоединить к контексту (Attach()), или загрузить из контекста (SingleOrDefault()), потом уже удалять.

    Вот ответ, где описан один из способов.

    Второй способ вы описали сами.

    Кстати, где вы вызываете сохранение изменений? По-хорошему транзакция не должна быть шире одного веб-запроса, в вашем случае - области Action контроллера.



    1 апреля 2011 г. 5:12

Все ответы

  • привет, сравни классы Products из поста и напрямую из базы может отличия есть вот и не проходит.

    а для обходного зачем Products в запросе передаешь просто один id передавай

    31 марта 2011 г. 21:07
  • класс один и тот же, потому что он из Entity Framework, а гоняю его для единообразия в принимаемых параметрах всех методов CRUD репозитория
    31 марта 2011 г. 21:10
  • Созданный объект не отслеживается в контексте. Его надо предварительно присоединить к контексту (Attach()), или загрузить из контекста (SingleOrDefault()), потом уже удалять.

    Вот ответ, где описан один из способов.

    Второй способ вы описали сами.

    Кстати, где вы вызываете сохранение изменений? По-хорошему транзакция не должна быть шире одного веб-запроса, в вашем случае - области Action контроллера.



    1 апреля 2011 г. 5:12