Как получить контекст базы данных в контроллере


Я весь день пытаюсь понять, чтобы получить ApplicationDbContext в ManageController.cs проекта MVC 6 по умолчанию.

Я пошел в интернет и погуглил много, но ни у кого, кажется, нет такой же проблемы, как у меня с этим. Это, вероятно, просто, но я не могу понять этого. У кого-нибудь есть идея?

Вот что я попробовал:

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

2 ответа:

Использование инъекции конструктора:

public class ManageController
{
    private readonly ApplicationDbContext _context;

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

Затем вы можете использовать объект _context в методах контроллера. Более подробная информация содержится в разделеDependency Injection документации.

Я использую Visual Studio 2015 Update 3. Некоторые из следующих шагов могут не потребоваться в будущем выпуске Visual Studio.

  1. Создать ASP.NET ядро (с .NET Core) проект с No Authentification.

  2. В консоли диспетчера пакетов выполните одно за другим следующие действия.

 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":{}, определенному в project.json.
"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. добавьте следующее К ConfigureServices в startup.cs прямо перед services.AddMvc();.
string connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<YourContextName>(options => options.UseSqlServer(connection));