Asp.net-Mvc
ApplicationDbContext - 它在項目中的位置
我想在我的 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 程序集中是正確的。
移動它並更改您的命名空間是您需要做的所有事情。