首页 > 解决方案 > ASP .NET MVC,“上下文”在哪里实例化

问题描述

这是一个关于 ASP.NET MVC 如何工作的问题。现在我试图了解控制器如何从数据库传递数据。而且我看不到“上下文”来自脚手架控制器中构造函数的 args[0] 的位置。例如,当您从名为“item”的模型中构建控制器时,您将获得 ItemsController。StaffsConroller 的构造函数是这样的;

public ItemsController(DbContext context)
{
    _context = context
}

变量“_context”在 ItemsController 中声明。但是“上下文”在哪里实例化?

标签: asp.net-mvc-5

解决方案


如果在 Startup.cs 中使用 Entity Framework 或配置依赖注入,则 DbContext 由 Dependency Injection 创建。你可以研究构造函数注入。

ASP.NET Core 应用程序使用依赖注入进行配置。可以使用 Startup.cs 的 ConfigureServices 方法中的 AddDbContext 将 EF Core 添加到此配置中。例如:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllers();

    services.AddDbContext<ApplicationDbContext>(
        options => options.UseSqlServer("name=ConnectionStrings:DefaultConnection"));
}

有关更多详细信息,您可以访问以下链接:ASP.NET Core 依赖注入中的 DbContext ,控制器中的依赖注入


推荐阅读