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

c# .net asp.net-core asp.net-core-mvc asp.net-mvc-controller

6105 просмотра

2 ответа

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

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

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

IServiceProvider service = new IServiceProvider();
var _context = service.GetService<ApplicationDbContext>();
Автор: StuiterSlurf Источник Размещён: 08.11.2019 11:29

Ответы (2)


12 плюса

Решение

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

public class ManageController
{
    private readonly ApplicationDbContext _context;

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

Затем вы можете использовать _contextобъект в ваших методах контроллера. В разделе « Внедрение зависимостей » больше информации .

Автор: Nate Barbettini Размещён: 20.08.2016 03:26

0 плюса

Я использую Visual Studio 2015 с обновлением 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));
Автор: Money Oriented Programmer Размещён: 20.08.2016 04:37
Вопросы из категории :
32x32