我有点糊涂了。我无法解释为什么以下工作:
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 });
}
该示例取自 Scott Guthrie 的 NerdDinner 演练,其中dinnerRepository.Save() 定义为:
public void Save() {
db.SubmitChanges();
}
而dinnerRepository.GetDinner(id) 定义如下:
public Dinner GetDinner(int id) {
return db.Dinners.SingleOrDefault(d => d.DinnerID == id);
}
即,db NerdDinnerDataContext 如何“知道”保存晚餐对象?
我对Linq To SQL的理解一定有一个洞,但如果我能指出它,那就吹了。好的,所以晚餐对象有一个 id,但是什么告诉 db 有更改要为具有该 ID 的特定记录提交?
我只是看不到它。应该是世界杯...
我只能认为 DataContext 对象 db 保留了对使用 GetDinner 方法调用获得的晚餐对象的引用。但是......这一切都感觉有点“神奇”
安德鲁