0

我對SimpleMembership及其在ASP.NET MVC Web站點中的使用有點困惑。對SimpleMembership的困惑

我的項目目前使用的代碼第一個dbcontext,它坐落在一個名爲「數據訪問」的類庫中。

我有另一個名爲「DomainObjects」的類庫,其中包含我在「數據訪問」中聲明的dbcontext使用的所有實體/對象。

我有另一個項目叫「DomainFactory」和顧名思義,它暴露的方法來訪問數據上下文,處理數據等等等等

最後,我已經叫MVC 4應用程序的「Web」(此應用程序實際上使用IoC調用在「DomainFacotry」項目中聲明的方法 - 但我不認爲這與我在此嘗試實現的內容相關。)

我的MVC應用程序現在處於我希望的階段爲其添加安全性。

使用基本的Internet應用程序模板,我可以看到在AccountModel.cs文件中聲明瞭一個UsersContext,並且該上下文在整個應用程序中都被嚴重使用。 這不是我想要的行爲。對於可測試性和關注點分離,我想我所有的驗證邏輯,通過我的域類進行處理,但是,我不知道如何去這一點,並希望得到以下問題的解答:

  1. 因爲我MVC應用程序沒有引用我創建的dbcontext,我如何重新生成並重新生成數據庫?我應該使用WebActivator嗎?這是首選的方法嗎?

  2. 將所有身份驗證邏輯移至DomainFactory項目的最佳方式是什麼?如果你已經這樣做了,你是怎麼做到的?

  3. 當我使用上面描述的方法時,有什麼需要注意的嗎?

非常感謝

回答

1

這裏你最大的問題是有多個上下文。 EF對於多個上下文並沒有很好的效果,即使你讓它們起作用,目前只能遷移一個上下文,所以其他人只能參考現有的DBO。

除此之外,將身份驗證移入類庫確實沒有任何複雜性。 ASP或EF關心您的模型居住的地方。只要你的DbContext可以獲得對他們的引用,你就很好。在這方面,你也可以在存儲類庫中的DbContext,但只是建議EF只會自動在啓動項目中看到DbContext實例。如果你把它放在一個班級圖書館裏,你必須告訴它每次在add-migrationupdate-database-ProjectName 'MyClassLibrary'的地方看。