gpt4 book ai didi

c# - 具有 MVC6 依赖项注入(inject)的 EF7 构造函数

转载 作者:行者123 更新时间:2023-11-30 12:58:20 25 4
gpt4 key购买 nike

测试新的 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 不支持指定在类注册时调用哪个构造函数(它仅使用一个公共(public)构造函数解析类型)。

您可以为此目的使用更高级的 DI - 即 autofac 的 alpha2 版本可用于 ASP.NET 5(“Autofac”:“4.0.0.0-alpha2”,“Autofac.Dnx”:“4.0.0 -alpha1").

关于c# - 具有 MVC6 依赖项注入(inject)的 EF7 构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176358/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com