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