Я немного растерялся.Я не могу объяснить, почему работает следующее:
AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(int id, FormCollection formValues) {
Dinner dinner = dinnerRepository.GetDinner(id);
UpdateModel(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id = dinner.DinnerID });
}
Образец взят из пошагового руководства Скотта Гатри NerdDinner, где dinnerRepository.Save () определено как:
public void Save() {
db.SubmitChanges();
}
И ужинRepository.GetDinner (id) определяется следующим образом:
public Dinner GetDinner(int id) {
return db.Dinners.SingleOrDefault(d => d.DinnerID == id);
}
Т.е. как БД NerdDinnerDataContext "знает", как сохранить объект обеда?
В моем понимании должна быть дыраLinq To SQL, но взорван, если я могу указать это.Итак, у объекта ужин есть идентификатор, но что говорит БД, что есть изменения, которые нужно отправить для этой конкретной записи с этим идентификатором?
Я просто не вижу его.Должно быть, Кубок мира ...
Я могу только думать, что объект DataContext, db, сохраняет ссылку на объект ужин, который был получен с помощью вызова метода GetDinner.Но ... Все это кажется немного "волшебным"
Андрей