Specifi c вопрос - как я могу сбросить DbContext
, созданный в Startup
в ASP. Net CORE, в приложение Data Access Layer
без прохождения через контроллер первым?
В настоящее время шаблон выглядит так:
request starts ---> dbcontext created ---> dbcontext passed to controller ---> pass to DAL --> return items
Но я действительно просто хочу
request starts ---> controller instanced ---> controller calls dal ---> dbcontext created -- return items
Проблема, с которой я столкнулся, заключается в получении конфигурации из appsettings в dal.
Справочная информация:
В старых проектах Framework у меня есть уровень доступа к данным, который я создаю и располагаю с помощью однострочного оператора в контроллере, как правило, так:
List<stuff> MyListOfStuff = new DAL().GetStuff();
Return View(MyListOfStuff)
Обычно сопоставляя эти списки / объекты с ViewModels в одной строке, используя цепной синтаксис или любые другие необходимые методы сопоставления.
Контекст создается во время создания DAL () и получает его параметры из global.asax или web.config
Я почти уверен, что у меня появилась эта привычка, потому что (я думаю) я во многих местах читал бизнес-логи c и логи доступа к данным c не должен go в контроллерах. Контроллеры должны быть минимально возможными?
Я сейчас изучаю asp. net ядро, контекст которого настраивается при запуске и создается вне поля зрения и по умолчанию передается контроллеру и MSDN. Учебное пособие показывает, что мы должны просто использовать этот контекст прямо в контроллере, вообще не используя его или не передавая его на другой уровень.
Являются ли учебные пособия просто показом нам быстрого, минимального способа сделать что-то, чтобы начать или это на самом деле лучшая практика? Я предпочитаю создавать контексты только в DAL и пока не вижу в этом никакой выгоды, и не могу понять, как перенести мои appsettings.json
сконфигурированные DbContexts в любой старый класс DAL.
https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/intro?view=aspnetcore-3.1