[英]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.