2013-12-12 4 views
0

Мне очень сложно найти решение этой проблемы. Я создал представление Edit.cshtml в своем приложении MVC. В настоящее время в моем контроллере у меня есть следующий кодEntity Framework C# - ObjectStateManager

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(Vendor vendor) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Vendors.Attach(vendor); 
      db.ObjectStateManager.ChangeObjectState(vendor, EntityState.Modified); 
      db.Entry(vendor).CurrentValues.SetValues(vendor); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(vendor); 
    } 

Но прежде чем я строить «dbo.ObjectStateManager» дает свою ошибку. Как ниже!

Ошибка 25 «VendorScorecard.Models.VendorScorecardEntities1» не содержит определение для «ObjectStateManager» и не метод расширения «ObjectStateManager» принимающую первый аргумент типа «VendorScorecard.Models.VendorScorecardEntities1» может быть найден (вы отсутствует с помощью директивы или ссылка на сборку) C: \ решения \ Web \ VisualStudio2010 \ VendorScorecard \ VendorScorecard-Good \ VendorScorecard \ Контроллеры \ VendorController.cs 90 20 VendorScorecard

я попробовал thid строку кода тоже! Он удаляет ошибку, но фактически не разрешает ввод в мою базу данных

//db.Entry(vendor).State = EntityState.Modified;

ответ

0

попробуйте этот код будет решить вашу проблему

db.Entry(employeeFromDB).State = EntityState.Modified; 

так что в основном вы должны избавиться от одной строки и поместить этот код вместо смотрите ниже

[HttpPost] 
    [ValidateAntiForgeryToken] 
    public ActionResult Edit(Vendor vendor) 
    { 
     if (ModelState.IsValid) 
     { 
      db.Vendors.Attach(vendor); 
      db.Entry(vendor).State = EntityState.Modified; 
      db.Entry(vendor).CurrentValues.SetValues(vendor); 
      db.SaveChanges(); 
      return RedirectToAction("Index"); 
     } 
     return View(vendor); 
    }