Как получить контекст базы данных в контроллере
Я весь день пытаюсь понять, чтобы получить 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
в методах контроллера. Более подробная информация содержится в разделеDependency Injection документации.
Я использую Visual Studio 2015 Update 3. Некоторые из следующих шагов могут не потребоваться в будущем выпуске Visual Studio.
Создать ASP.NET ядро (с .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));