如何在控制器中获取数据库上下文

本文关键字:获取 数据库 上下文 控制器 | 更新日期: 2023-09-27 18:03:18

我整天都在想办法在默认MVC 6项目的ManageController.cs中获得ApplicationDbContext

我上网搜索了很多,但似乎没有人和我有同样的问题。这可能很简单,但我想不通。有人有主意吗?

以下是我尝试过的:

IServiceProvider service = new IServiceProvider();
var _context = service.GetService<ApplicationDbContext>();

如何在控制器中获取数据库上下文

使用构造函数注入:

public class ManageController
{
    private readonly ApplicationDbContext _context;
    public ManageController(ApplicationDbContext context)
    {
        _context = context;
    }
}

然后,您可以在控制器方法中使用_context对象。文档的依赖注入部分提供了更多信息。

我使用的是Visual Studio 2015 Update 3。Visual Studio的未来版本可能不需要执行以下某些步骤。

  1. 使用No Authentification创建ASP.NET Core(带有.NET Core(项目。

  2. 在Package Manager控制台中,依次执行以下各项。

 Install-Package Microsoft.EntityFrameworkCore.SqlServer
 Install-Package Microsoft.EntityFrameworkCore.Tools –Pre
 Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Tools -Pre
 Install-Package Microsoft.VisualStudio.Web.CodeGenerators.Mvc -Pre
  1. 将以下内容添加到project.json中定义的"tools":{}
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final",
  1. 将以下内容添加到appsettings.json

"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)''mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
},
  1. 将以下内容添加到services.AddMvc();之前的startup.cs中的ConfigureServices
string connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<YourContextName>(options => options.UseSqlServer(connection));