簡體   English   中英

具有MVC6依賴注入的EF7構造函數

[英]EF7 constructor with MVC6 dependency injection

測試新的MVC6和EF7框架。

我們經常需要在數據庫層中使用HttpContext。 要在MVC6中執行此操作,我們只需要一個DbContext構造函數,如下所示:

 public class ApplicationDbContext : IdentityDbContext<ApplicationUser>
    {                  
        HttpContext _httpContext;                     
        public ApplicationUser CurrentUser { get; set; }                

        public ApplicationDbContext(IHttpContextAccessor httpContextFactory=null)

在我們的Startup.cs中,我們將DI注冊為:

services.AddTransient<IHttpContextAccessor, HttpContextAccessor>();

這很完美......

......直到沒有。 在運行應用程序時,一切都很好。 但是,當我需要使用“dnx.ef migration add”應用某些模型更改時,我們會收到錯誤“沒有為此對象定義無參數構造函數”。

好的,沒問題。 因此,我們添加了一個沒有參數的附加構造函數,我們只希望遷移過程使用它們。 但是,DI進程只注冊無參數構造函數,因此永遠不會傳入HttpContext對象。

那么如何讓MVC的默認DI模型強制使用我的構造函數和參數? 並保留無參數構造函數用於遷移?

基本的ASP.NET開箱即用的DI不支持指定在注冊類時調用哪個構造函數(它只解析具有一個公共構造函數的類型)。

你可以使用更高級的DI來實現這一目的 - 即有一個alpha2版本的autofac可用於ASP.NET 5(“Autofac”:“4.0.0.0-alpha2”,“Autofac.Dnx”:“4.0.0-alpha1” )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM