fix: System.ObjectDisposedException for db context into sync secrvice
This commit is contained in:
		| @@ -2,6 +2,7 @@ | ||||
| using Cronos; | ||||
| using Microsoft.AspNetCore.Http; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.EntityFrameworkCore; | ||||
| using Microsoft.Extensions.DependencyInjection; | ||||
| using Microsoft.Extensions.Logging; | ||||
| using Microsoft.Extensions.Options; | ||||
| @@ -191,15 +192,20 @@ public class ScheduleController(ILogger<ScheduleController> logger, IOptionsSnap | ||||
|             filePaths.Add((filePath, defaultCampus[i])); | ||||
|         } | ||||
|  | ||||
|         var sync = (ScheduleSynchronizer)ActivatorUtilities.GetServiceOrCreateInstance(provider, typeof(ScheduleSynchronizer)); | ||||
|  | ||||
|         if (force) | ||||
|         { | ||||
|             dbContext.Lessons.RemoveRange(dbContext.Lessons.ToList()); | ||||
|             dbContext.Lessons.RemoveRange(await dbContext.Lessons.ToListAsync()); | ||||
|             await dbContext.SaveChangesAsync(); | ||||
|         } | ||||
|  | ||||
|         _ = sync.StartSync(filePaths, CancellationToken.None); | ||||
|         var scopeFactory = provider.GetRequiredService<IServiceScopeFactory>(); | ||||
|         _ = Task.Run(async () => | ||||
|         { | ||||
|             using var scope = scopeFactory.CreateScope(); | ||||
|             var sync = scope.ServiceProvider.GetRequiredService<ScheduleSynchronizer>(); | ||||
|  | ||||
|             await sync.StartSync(filePaths, CancellationToken.None); | ||||
|         }, CancellationToken.None); | ||||
|  | ||||
|         return Ok(); | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user