یک نکتهی تکمیلی: نیاز به استفادهی از یک Context مجزای از Context درخواست جاری، در حین لاگ کردن
اگر استثنای حاصله به علت وجود مشکلی در اعمال خود EF-Core باشد، از این لحظه به بعد نمیتوان از Context موجود، برای ثبت کردن اطلاعاتی در بانک اطلاعاتی برنامه استفاده کرد. یعنی زمانیکه Context ای به سازندهی لاگر تزریق شد:
public class DbLoggerProvider:ILoggerProvider { public DbLoggerProvider(ApplicationDbContext dbContext)
برای اینکه بتوان یک Context مجزای از Context درخواست جاری را در لاگر مورد استفاده قرار داد، ابتدا باید IServiceProvider را بجای Context، به سازندهی لاگر تزریق کرد و سپس با استفاده از آن، یک scoped context جدید را ایجاد کرد (مانند کاری که در اینجا شده):
var scopeFactory = _serviceProvider.GetRequiredService<IServiceScopeFactory>(); using (var scope = scopeFactory.CreateScope()) { var scopedProvider = scope.ServiceProvider; using (var newDbContext = scopedProvider.GetRequiredService<ApplicationDbContext>()) { // ... } }