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

时间:2016-08-20 15:24:51

标签: c# .net asp.net-core asp.net-core-mvc asp.net-mvc-controller

我正在努力想要在默认的MVC 6项目的ApplicationDbContext中获得ManageController.cs

我上网了,谷歌搜索了很多,但似乎没有人遇到与我相同的问题。它可能很简单,但我无法弄明白。 有人有想法吗?

以下是我的尝试:

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

2 个答案:

答案 0 :(得分:12)

使用构造函数注入:

public class ManageController
{
    private readonly ApplicationDbContext _context;

    public ManageController(ApplicationDbContext context)
    {
        _context = context;
    }
}

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

答案 1 :(得分:0)

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

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

  2. 在软件包管理器控制台中,依次执行以下各项。

  3.    
     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. 将以下内容添加到"tools":{}
    2. 中定义的project.json    
      "Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
      "Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final",
      
      1. 将以下内容添加到appsettings.json
      2. "ConnectionStrings": {
        "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
        },
        
        1. ConfigureServices之前startup.csservices.AddMvc();添加到string connection = Configuration.GetConnectionString("DefaultConnection"); services.AddDbContext<YourContextName>(options => options.UseSqlServer(connection));
        2.    
          getToken()