繁体   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