How to get the database context in a controller

蓝咒 提交于 2019-12-05 22:04:55

问题


I am trying all day to figure out to get the ApplicationDbContext in the ManageController.cs of a default MVC 6 project.

I went online and Googled a lot but no one seems to have the same problem as I have with it. It is probably simple but I can't figure it out. Anyone has an idea?

Here is what I tried:

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

回答1:


Use constructor injection:

public class ManageController
{
    private readonly ApplicationDbContext _context;

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

Then you can use the _context object in your controller methods. There's more info in the Dependency Injection section of the docs.




回答2:


I am using Visual Studio 2015 Update 3. Some of the following steps might not be needed in the future release of Visual Studio.

  1. Create ASP.NET Core (with .NET Core) project with No Authentification.

  2. In Package Manager Console, execute each of the following, one after the other.

 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. Add the following to the "tools":{} defined in project.json.
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final",
  1. Add the following to appsettings.json.

"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
},
  1. Add the following to ConfigureServices in startup.cs right before services.AddMvc();.
string connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<YourContextName>(options => options.UseSqlServer(connection));


来源:https://stackoverflow.com/questions/39055754/how-to-get-the-database-context-in-a-controller

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!