У меня есть веб-приложение asp. net core 2 с EF 6. До сих пор я использовал контекст db, используя внедрение зависимостей, предоставляемое ядром asp. net, для внедрения контекста в контроллеры. :
protected DbContext dbContext;
public BaseController(DbContext context)
{
dbContext = context;
}
Во многих моих видах бритвы я вызываю метод расширения, чтобы инициализировать сетку Telerik, передавая ей параметры. До сих пор мне не нужно было обращаться к контексту БД, но теперь мне нужно получить доступ к нему в методе расширения для некоторых логик c:
public static GridBuilder<T> BaseProcessGrid<T>(this GridBuilder<T> helper, string controllerName, string gridName)
where T : class, IProcessViewModel
{
bool showDelete = false;
//check if the current user has edit rights
using (var db = new DbContext())
{
var users = db.Users.ToList(); // <--- this just doesn't get any records.
}
При попытке создать новый контекст БД изнутри stati c method, он просто не выбирает никаких записей. Мне нужно выяснить, как на самом деле получить доступ к новому экземпляру DbContext или каким-либо образом получить доступ к сервису с заданными областями, определенному в моем Startup.cs:
services.AddScoped(_ => new MantleMapperContext(Configuration.GetConnectionString("DbContext")));
РЕДАКТИРОВАТЬ:
Как предлагается ниже, В итоге я внедрил сервис dbContext прямо в мое представление, а затем передал его в метод следующим образом:
@inject DbContext dbContext