2009-06-04 68 views
0

我正在使用實體框架創建一個Asp.net MVC站點,並且想知道如何在多個請求的內存中保留新的和更新的實體而不需要提交到數據庫。
假設,例如用戶轉到視圖以編輯實體,並且在該視圖上,他們可以將子女添加到該實體。我想在用戶點擊頁面上的「保存」按鈕之前不對數據庫提交更改。
我已經拿起了我不堅持的ObjectContext,我明白。本質上,我想要一個實體,將它保持在會話狀態或其他相同的地方,在那裏進行更改,然後在用戶完成頁面時將這些更改提交到數據庫。
有關如何做到這一點的任何想法?實體框架實體的延遲提交

回答

1

ViewData集合是一個用於跨請求持久對象的臨時「便箋簿」。它以與Session對象相同的方式工作,但是在生命週期中是短期的。

在默認的MVC項目中,您可以在Home控制器中看到這個示例,它使用ViewData [「Message」]在Index視圖上顯示消息。

+0

嗯,這有點多了點,似乎我有MVC的另一個概念問題,以解決問題。 – 2009-06-04 21:32:11

0

我遇到了這個問題尋找類似的問題。爲了防止其他人處於相同的情況,Josh E接受的答案是錯誤的--ViewData不是跨多個請求持久化的,它只是將數據傳遞給View,這發生在同一個請求中。 TempData IS在請求中持續存在,但存儲在其中的值在讀取一次後會被清除。

我對Entity Framework不太瞭解,知道它是否受支持,但可以在Session中存儲任何(serializable?)對象。但是,這些對象的生存期取決於會話生存期,除非您手動刪除它們。此外,這可能會佔用大量的內存。我相信最可取的方法是使用持久性框架,可以爲您管理這個。我不知道實體框架是否可以做到這一點。對於那些堅持使用ADO的人,我還沒有找到一個好的解決方案。