我有一個使用Entity Framework 4的MVC4應用程序,它使用了存儲庫模式。一旦用戶登錄後,他們可以在數據庫層上執行CRUD操作,並且所有信息都被保存並鏈接到特定用戶。現在我也想讓這些功能可供未登錄的用戶使用,以便他們可以嘗試應用程序。一旦他們決定訂閱,我想保存他們在嘗試中創建的數據,就像數據庫中登錄的用戶一樣。如何存儲每個會話未登錄用戶的數據?
該應用程序的設置是將實體框架數據庫上下文抽象爲IContext
後面。這意味着可以使用IContext的另一個實現。我使用Autofac作爲DI容器。 (如果您覺得您需要更多關於安裝的信息,所有代碼可以在here找到)。
我正在尋找一種實現試用功能的好方法。我想到的是:
- 每個用戶使用一個「內存」數據庫,但我認爲這可能會佔用太多的內存太多的用戶存在。
- 另一個想法是將數據存儲在客戶端(JavaScript)中並在註冊後保存所有信息,但這似乎需要大量重寫,並且所有C#邏輯都需要轉換爲JavaScript並一起維護(一旦C#發生更改, JavaScript必須改變)。
- 保存數據庫中的數據以獲得特定於會話的隨機
UserId
,但是一旦用戶註銷,請刪除與「UserId」相關的所有數據。
也許有更好的方法。我希望如果你有一個實現嘗試功能的好主意,你會願意與我分享。
在此先感謝。
您可以使用其他數據庫?如果是的話,你可以創建另一個數據庫'可播放',因爲這個數據庫不是針對實際用戶的。如果開始佔用大量內存可以回滾。如果用戶想要註冊,則可以在實際數據庫中移動他的數據。 – adricadar
我剛剛爲我正在開發的應用程序提供了第三個選項,我認爲它是一個不錯的選擇,因爲它不會增加額外開銷。 – martinoss
@adricadar,是的,我可以使用另一個數據庫!然後爲未登錄的用戶使用不同的上下文(使用另一個連接字符串),並有另一個服務和邏輯的實現,這取決於登錄的用戶? :-)聽起來像是一種方式。謝謝。 –