CompileAsyncQuery: RegisterInstanceDao
This commit is contained in:
parent
dbbebc8c4b
commit
9a3f0278a3
@ -42,16 +42,16 @@ public class RegisterInstanceDao<T> : IRegisterInstanceDao<T> where T : IHostedS
|
|||||||
|
|
||||||
public async Task AddOrUpdateAsync(InstanceRegistration obj)
|
public async Task AddOrUpdateAsync(InstanceRegistration obj)
|
||||||
{
|
{
|
||||||
using var _instanceRegistrationContext = _dbContextFactory.CreateDbContext();
|
using var instanceRegistrationContext = _dbContextFactory.CreateDbContext();
|
||||||
var inst = await _instanceRegistrationContext.InstanceRegistrations.FindAsync(obj.InstanceRegistrationId);
|
var inst = await instanceRegistrationContext.InstanceRegistrations.FindAsync(obj.InstanceRegistrationId);
|
||||||
|
|
||||||
if (inst == null)
|
if (inst == null)
|
||||||
{
|
{
|
||||||
await _instanceRegistrationContext.AddAsync(obj);
|
await instanceRegistrationContext.AddAsync(obj);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_instanceRegistrationContext.Entry(inst).CurrentValues.SetValues(obj);
|
instanceRegistrationContext.Entry(inst).CurrentValues.SetValues(obj);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool saveFailed;
|
bool saveFailed;
|
||||||
@ -62,7 +62,7 @@ public class RegisterInstanceDao<T> : IRegisterInstanceDao<T> where T : IHostedS
|
|||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _instanceRegistrationContext.SaveChangesAsync();
|
await instanceRegistrationContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
catch (DbUpdateConcurrencyException ex)
|
catch (DbUpdateConcurrencyException ex)
|
||||||
{
|
{
|
||||||
@ -83,27 +83,25 @@ public class RegisterInstanceDao<T> : IRegisterInstanceDao<T> where T : IHostedS
|
|||||||
|
|
||||||
public async Task<IEnumerable<InstanceRegistration>> GetAllAsync()
|
public async Task<IEnumerable<InstanceRegistration>> GetAllAsync()
|
||||||
{
|
{
|
||||||
using var _instanceRegistrationContext = _dbContextFactory.CreateDbContext();
|
using var instanceRegistrationContext = _dbContextFactory.CreateDbContext();
|
||||||
return await _instanceRegistrationContext.InstanceRegistrations
|
return await Queries.GetInstanceRegistrationsAsync(instanceRegistrationContext, typeof(T).GetFormattedName()).ToListAsync();
|
||||||
.Where(x => x.WorkerTypeName == typeof(T).GetFormattedName())
|
|
||||||
.ToListAsync();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task DeleteAsync(string instanceId)
|
public async Task DeleteAsync(string instanceId)
|
||||||
{
|
{
|
||||||
using var _instanceRegistrationContext = _dbContextFactory.CreateDbContext();
|
using var instanceRegistrationContext = _dbContextFactory.CreateDbContext();
|
||||||
var item = await _instanceRegistrationContext.InstanceRegistrations.FindAsync(instanceId);
|
var item = await instanceRegistrationContext.InstanceRegistrations.FindAsync(instanceId);
|
||||||
|
|
||||||
if (item == null)
|
if (item == null)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
_instanceRegistrationContext.InstanceRegistrations.Remove(item);
|
instanceRegistrationContext.InstanceRegistrations.Remove(item);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
await _instanceRegistrationContext.SaveChangesAsync();
|
await instanceRegistrationContext.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
catch (DbUpdateConcurrencyException ex)
|
catch (DbUpdateConcurrencyException ex)
|
||||||
{
|
{
|
||||||
@ -117,3 +115,11 @@ public class RegisterInstanceDao<T> : IRegisterInstanceDao<T> where T : IHostedS
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
file static class Queries
|
||||||
|
{
|
||||||
|
public static readonly Func<InstanceRegistrationContext, string, IAsyncEnumerable<InstanceRegistration>> GetInstanceRegistrationsAsync = Microsoft.EntityFrameworkCore.EF.CompileAsyncQuery(
|
||||||
|
(InstanceRegistrationContext ctx, string workerTypeName) =>
|
||||||
|
ctx.InstanceRegistrations
|
||||||
|
.Where(x => x.WorkerTypeName == workerTypeName));
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user