我知道你們都厭倦了這一點的LINQ到SQL問題上的編輯工作時,它加載的LINQ to SQL對象兩次,但我勉強開始使用它(之前從未使用過的ORM)我已經找到了一些「醜陋」的東西。我很習慣ASP.NET Webforms老派開發,但我想把它留在後面並學習新東西(我剛剛開始閱讀ASP.NET MVC書籍和.NET 3.5/4.0)。如何避免網站
所以這裏有一件事我不喜歡,我不能找到一個很好的替代它。
在編輯我已經看到該對象的LINQ對象的大多數示例被加載(擊中分貝)在第一填寫表格頁上的當前值。然後,用戶修改一些字段,當點擊「保存」按鈕時,該對象被第二次加載並更新。
下面是ScottGu NerdDinner網站的簡化示例。
//
// GET: /Dinners/Edit/5
[Authorize]
public ActionResult Edit(int id) {
Dinner dinner = dinnerRepository.GetDinner(id);
return View(new DinnerFormViewModel(dinner));
}
//
// POST: /Dinners/Edit/5
[AcceptVerbs(HttpVerbs.Post), Authorize]
public ActionResult Edit(int id, FormCollection collection) {
Dinner dinner = dinnerRepository.GetDinner(id);
UpdateModel(dinner);
dinnerRepository.Save();
return RedirectToAction("Details", new { id=dinner.DinnerID });
}
正如您所看到的,每次修改都會加載兩次晚餐對象。除非我錯過了一些有關LINQ to SQL緩存最後查詢的對象的東西,或者類似的東西,我不喜歡兩次獲取它,因爲它只能被檢索一次,然後被修改,然後再重新連接到數據庫。
那麼,我真的錯過了什麼嗎?或者它實際上擊中了兩次數據庫(在上面的示例中它不會造成傷害,但可能會出現一些情況,即獲取一個對象或一組對象可能會很重)。
如果是這樣,您認爲還有什麼方法可以避免雙重加載對象?
太感謝你了, 問候!