Asp.net-Mvc

ApplicationDbContext - 它在項目中的位置

  • September 27, 2014

我想在我的 mvc 5 應用程序中使用一個(EF)上下文文件,並且我想使用 asp 身份。

我在解決方案 DAL、GUI 和 WebAPI 中有一些項目。

我只想移入ApplicationDbContextDAL 程序集並從我的 UI 項目中完全刪除 EF。

當你開始你的新項目時,你做什麼ApplicationDbContext和 asp 身份?

你是把它留在 UI 層還是把它移到數據層?

我真的沒有任何經驗豐富的開發人員可以問我希望它不會被否決。

分離身份:

將身份與 UI 分開要復雜得多。在這裡,Microsoft 將它們糾纏得如此緊密,以至於我建議您將其保留,直到您在專家級別上了解 Identity、EF 和 Repository Pattern。

但是,如果您有興趣將身份與 UI 級別分開,這裡是**來自 Dino Esposito 的一個很好的資源**


  • ApplicationDbContext請注意您的帳戶控制器的建構子中的引用:
public AccountController()
   : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>
                        (new ApplicationDbContext())))

這很容易成為對 DAL 中的上下文的引用。

  • 您將很難在上下文中使用 Repo。那將需要重寫UserManager我非常懷疑你想要做的事情。
  • 您可以創建一個繼承自ApplicationDbContext介面並抽象為介面的子介面

:

public class UserIdentityContext : ApplicationDbContext, IUserIdentityContext 

現在您可以使用 Ninject 將您的帳戶控制器綁定到抽像模式

public AccountController()
   : this(new UserManager<ApplicationUser>(new UserStore<ApplicationUser>
                        (IUserIdentityContext identityContext)))

但是這些移動都不允許您從 UI 項目中刪除 EF 程序集。在這裡,微軟將數據和 UI 元素綁定得太緊密了。您將不得不重新編寫帳戶控制器。

這是他們正在處理的一個問題,並且可能會在MVC 6 / Identity 3中得到很大改進

我想你說的是實體框架的 DbContext?如果是這樣,那麼您將其保留在您的 DAL 程序集中是正確的。

移動它並更改您的命名空間是您需要做的所有事情。

引用自:https://stackoverflow.com/questions/25828377