[英].net MVC IdentityDbContext Dependency Injection
我正在使用模板化的Asp.Identity實現創建一個新的MVC 5項目。 我想做的就是利用我自己的域實體中現有的Asp.Identify實現。例如,一個Asp.Identity用戶可以是1個或多個Clubs的成員。 我希望能夠在我的MVC控制器中訪問用戶信息-例如,我希望能夠查看用戶是否屬於特定角色等。
基本上,我在一些我想澄清的問題上仍然有些困惑。
在Startup.Auth.cs中,添加了ApplicationUserManager及其關聯的實體框架DBContext。 即
app.CreatePerOwinContext(ApplicationDbContext.Create);
是否將這個Entity Framework DBContext添加到每個MVC Controller中-這是通過依賴項注入完成的嗎?
如果其注入了IOC-是否在每個HTTP請求上創建?
我通過向其添加自己的Domain實體來擴展現有的模板化ApplicationDbContext(如下所示)。 3.我可以在MVC Controillers中訪問所有這些內容嗎,又可以按要求進行訪問嗎?
public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
{
public ApplicationDbContext()
: base("DefaultConnection", throwIfV1Schema: false)
{
}
public static ApplicationDbContext Create()
{
return new ApplicationDbContext();
}
//Add my own domain entities here...
public virtual DbSet<Address> Address { get; set; }
public virtual DbSet<Club> Clubs { get; set; }
}
要回答您的問題:
CreatePerOwinContext()
因此每次(在每個請求上)創建OwinContext
時,它都將創建此ApplicationDbContext
。 Context.GetOwinContext().Get<ApplciationDbContext>()
在控制器中訪問它們。 由於它返回了ApplicationDbContext,因此您可以執行與ApplicationDbContext一樣的任何操作。 因此,如果您對其進行擴展,那么這些擴展屬性也將可用。 如果要對帶有Owin的容器進行DI,則需要一個Owin知道的DependencyResolver。 大多數容器為它們的注射提供了一個。 例如,Ninject提供了Ninject.Web.Common.OwinHost nuget包,該包允許您使用app.UseNinjectMiddleware()
配置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.