Как получить контекст базы данных в контроллере
Я пытаюсь весь день выяснить, чтобы получить 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.
Создайте проект ASP.NET Core (с.NET Core) с
No Authentification
,В консоли диспетчера пакетов выполните каждое из следующих действий, одно за другим.
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
- Добавьте следующее к
"tools":{}
определяется вproject.json
,
"Microsoft.EntityFrameworkCore.Tools": "1.0.0-preview2-final",
"Microsoft.VisualStudio.Web.CodeGeneration.Tools": "1.0.0-preview2-final",
- Добавьте следующее к
appsettings.json
,
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=YourDatabaseName;Trusted_Connection=True;MultipleActiveResultSets=true"
},
- Добавьте следующее к
ConfigureServices
вstartup.cs
прямо передservices.AddMvc();
,
string connection = Configuration.GetConnectionString("DefaultConnection");
services.AddDbContext<YourContextName>(options => options.UseSqlServer(connection));