Witam, piszę prostą aplikację webową w MVC3 i mam problem z edycją wpisów w bazie danych. Wcześniej napisałem w MVC1 prosty przykład i mi działało. Na początku nie mogłem w ogóle zrobić edycji, ponieważ we wszystkich tutorialach była komenda db.Entry(klient).State = EntityState.Modified;, tymczasem metody Entry nie było widać w podpowiedziach, a kiedy ją wpisywałem wyrzucało błąd, że taka metoda nie istnieje, oraz żadna metoda nie przyjmuje takiego arguentu. Ale to tak przy okazji.
Obecnie mam błąd o takiej treści:
Nie można zaktualizować obiektu EntitySet „Customer”, ponieważ ma on element DefiningQuery, a w elemencie <ModificationFunctionMapping> nie istnieje element <UpdateFunction>, który umożliwiałby obsługę bieżącej operacji.
Błąd pojawia się zarówno kiedy POST w kontrolerze wygląda tak, jak mi ją wygenerował Web Developer, jak i kiedy wstawię polecenia które działały mi w MVC1. Poniżej obecny wygląd tej funkcji, wykomentowany jest fragment wklejony z MVC1:
// POST: /Customer/Edit/5
[HttpPost]
public ActionResult Edit(int id, Customer customer)
{
if (ModelState.IsValid)
{
/* Poniższy blok skopiowany z projektu w MVC1, gdzie działał bez zarzutu
var zmieniany = db.Customer.Single(a => a.CustomerID == id);
UpdateModel(zmieniany);
*/
/* Tak to powinno wyglądać według większości tutoriali, ale metoda Entry nie istnieje
pomimo, że wszystkie using są.
db.Entry(klient).State = EntityState.Modified;
*/
//A to wygenerował WebDeveloper
db.Customer.Attach(customer);
db.ObjectStateManager.ChangeObjectState(customer, EntityState.Modified);
//Zarówno wygenerowane jak i przeniesione z MVC1 linie generują błąd tu:
db.SaveChanges();
return RedirectToAction("Index");
}
return View(customer);
}
Czy wie ktoś jak rozwiązać ten problem?