У меня есть своя собственная простая структура для маршрутизации / контроллеров в C # и .NET Core.Я использую EF Core для ORM.В Startup.cs я настраиваю его так:
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<Context>(options =>
{
options.EnableSensitiveDataLogging();
options.UseSqlServer(System.Environment.GetEnvironmentVariable("SQL_SERVER_CONNECTION"));
});
}
Я использую внедрение зависимостей, чтобы получить экземпляр моего DbContext.В своих действиях контроллера я делаю следующее:
Действие 1 :
- Не используйте
AsNoTracking()
в моих запросах - Вносите измененияв экземпляр модели
- Не сохранять изменения
Действие 2 (другой HTTP-запрос) :
- Делать буквально что угодно
- Выполнить
SaveChangesAsync()
для DbContext
Изменения, сделанные в Действие 1 , сохраняются.Если я разорвал какие-либо отношения в Action 1 , я получаю сообщение об ошибке.
Я знаю, что по умолчанию DbContext ограничен.Нужно ли мне реализовывать свой собственный код области видимости, чтобы получать новый экземпляр с каждым HTTP-запросом?
ПРИМЕЧАНИЕ. Я НЕ использую MVC, я использую собственную небольшую библиотеку, которую разрабатываю,Я только что узнал, что MVC, вероятно, использует IServiceScopeFactory для генерации областей.Я не уверен, как использовать его в промежуточном программном обеспечении, хотя.