2015-04-01 103 views
1

打交道時臨時持久性也許這是我的經驗不足,仍與真正的MVC拉伸和Entity Framework,但我碰到的一個問題,我真的不能弄清楚。與MVC和Entity Framework

到現在爲止,我的應用已經很簡單:我顯示和隱藏在查看了幾個div的,並且當用戶輸入的所有數據,他們點擊提交,我使用EF將它保存到數據庫中。併發症我現在已經是我基本上必須有一個流,其中:

人寄存器 - >註冊另一個人嗎?如果是 - >人員寄存器 - >等等......

編輯*澄清:人進來註冊組的人。第一個屏幕是他們輸入識別信息的表單,接下來點擊,然後詢問他們是否想添加其他人,如果他們點擊是,他們會重複該過程。每次發生這種情況時,我都會創建一個註冊對象,直到他們不想再添加爲止,然後他們被引導至「確認」操作,向他們顯示註冊並讓他們提交註冊。

,我需要有一種方法來暫時保存這些數據,而用戶跳轉到不同的動作,並最終提交它保存。我不想在Session變量中保存一堆模型。

+0

您是否可以解釋一下您期望在人員註冊過程中發生的事情 - >註冊另一個等等過程?提出的解決方案實際上取決於你想要發生什麼。您可以使用AJAX將每個「註冊」事件的數據保存到數據庫中。或者,您可以通過「註冊確認」頁面提供「註冊另一個」選項,並將操作鏈接返回到註冊頁面。很多的可能性!也許是更具描述性/特定性會讓回覆更多 – 2015-04-01 19:30:57

+1

我編輯了我的帖子。 – DeveryDay 2015-04-01 19:33:30

回答

0

那麼,在你舉的例子中,你不應該堅持任何事情。每個人註冊後,可以在將數據重定向回表單之前立即將數據保存到數據庫,以便用戶註冊其他人。在每一步中,你都要處理一個獨立的單元,所以沒有理由不立即保存它。

在另一種情況下,可能是像嚮導一樣,在多個步驟中收集部分信息,最終生成一個單獨的單位,唯一真正的選擇是使用類似TempData的東西。 TempData仍然是基於會話的,和引擎蓋下使用Session對象,但它確實比傳統使用的Session的數據只能通過下一個請求持久的優勢,而Session數據持續了會話的生命,根據配置可以是幾分鐘到幾周的任何時間。

+0

他們正在註冊爲一個組。我不希望有人進來,通過註冊5人的一半決定他們不想再註冊任何人,並且在桌子上有垃圾。 – DeveryDay 2015-04-01 19:34:05

+0

那麼有沒有辦法將這些添加到DbSet而不保存它們,這樣它們就會在動作之間持續存在?我從來沒有試過這個,所以我不知道它是否會起作用。 – DeveryDay 2015-04-01 19:35:42

+0

對於這樣的事情,您需要在前端使用'TempData'或JavaScript解決方案來動態地將其他人添加到單個窗體,以便您可以一次性發布所有內容。後者的選擇實際上可能是這樣的最好的選擇。但是,不,您不能在不保存的情況下將某些內容添加到DbSet。 DbSet本身不會被保留;它只是一個將實體綁定到它們所代表的數據庫表的存儲庫。向DbSet添加內容表示您打算將其保存到數據庫中,但如果您不調用SaveChanges(),它就會消失。 – 2015-04-01 19:40:52