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

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

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

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

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

2 ответа

Решение

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

public class ManageController
{
    private readonly ApplicationDbContext _context;

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

Тогда вы можете использовать _context object in your controller methods. There's more info in the Dependency Injection section of the docs.

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

  1. Создайте проект ASP.NET Core (с.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));
Другие вопросы по тегам