diff --git a/common/ASC.Core.Common/Hosting/RegisterInstanceDao.cs b/common/ASC.Core.Common/Hosting/RegisterInstanceDao.cs index 5abc0d83ae..5c9d36b77e 100644 --- a/common/ASC.Core.Common/Hosting/RegisterInstanceDao.cs +++ b/common/ASC.Core.Common/Hosting/RegisterInstanceDao.cs @@ -42,16 +42,16 @@ public class RegisterInstanceDao : IRegisterInstanceDao where T : IHostedS public async Task AddOrUpdateAsync(InstanceRegistration obj) { - using var _instanceRegistrationContext = _dbContextFactory.CreateDbContext(); - var inst = await _instanceRegistrationContext.InstanceRegistrations.FindAsync(obj.InstanceRegistrationId); + using var instanceRegistrationContext = _dbContextFactory.CreateDbContext(); + var inst = await instanceRegistrationContext.InstanceRegistrations.FindAsync(obj.InstanceRegistrationId); if (inst == null) { - await _instanceRegistrationContext.AddAsync(obj); + await instanceRegistrationContext.AddAsync(obj); } else { - _instanceRegistrationContext.Entry(inst).CurrentValues.SetValues(obj); + instanceRegistrationContext.Entry(inst).CurrentValues.SetValues(obj); } bool saveFailed; @@ -62,7 +62,7 @@ public class RegisterInstanceDao : IRegisterInstanceDao where T : IHostedS try { - await _instanceRegistrationContext.SaveChangesAsync(); + await instanceRegistrationContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ex) { @@ -83,27 +83,25 @@ public class RegisterInstanceDao : IRegisterInstanceDao where T : IHostedS public async Task> GetAllAsync() { - using var _instanceRegistrationContext = _dbContextFactory.CreateDbContext(); - return await _instanceRegistrationContext.InstanceRegistrations - .Where(x => x.WorkerTypeName == typeof(T).GetFormattedName()) - .ToListAsync(); + using var instanceRegistrationContext = _dbContextFactory.CreateDbContext(); + return await Queries.GetInstanceRegistrationsAsync(instanceRegistrationContext, typeof(T).GetFormattedName()).ToListAsync(); } public async Task DeleteAsync(string instanceId) { - using var _instanceRegistrationContext = _dbContextFactory.CreateDbContext(); - var item = await _instanceRegistrationContext.InstanceRegistrations.FindAsync(instanceId); + using var instanceRegistrationContext = _dbContextFactory.CreateDbContext(); + var item = await instanceRegistrationContext.InstanceRegistrations.FindAsync(instanceId); if (item == null) { return; } - _instanceRegistrationContext.InstanceRegistrations.Remove(item); + instanceRegistrationContext.InstanceRegistrations.Remove(item); try { - await _instanceRegistrationContext.SaveChangesAsync(); + await instanceRegistrationContext.SaveChangesAsync(); } catch (DbUpdateConcurrencyException ex) { @@ -117,3 +115,11 @@ public class RegisterInstanceDao : IRegisterInstanceDao where T : IHostedS } } + +file static class Queries +{ + public static readonly Func> GetInstanceRegistrationsAsync = Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery( + (InstanceRegistrationContext ctx, string workerTypeName) => + ctx.InstanceRegistrations + .Where(x => x.WorkerTypeName == workerTypeName)); +} \ No newline at end of file