execute delete in SaveAsync
This commit is contained in:
parent
d56629278f
commit
878bf35ce7
@ -50,27 +50,35 @@ public class IPRestrictionsRepository
|
|||||||
public async Task<List<IpRestrictionBase>> SaveAsync(IEnumerable<IpRestrictionBase> ips, int tenant)
|
public async Task<List<IpRestrictionBase>> SaveAsync(IEnumerable<IpRestrictionBase> ips, int tenant)
|
||||||
{
|
{
|
||||||
await using var tenantDbContext = _dbContextManager.CreateDbContext();
|
await using var tenantDbContext = _dbContextManager.CreateDbContext();
|
||||||
|
var strategy = tenantDbContext.Database.CreateExecutionStrategy();
|
||||||
|
|
||||||
tenantDbContext.TenantIpRestrictions.RemoveRange(await Queries.TenantIpRestrictionsAsync(tenantDbContext, tenant).ToListAsync());
|
await strategy.ExecuteAsync(async () =>
|
||||||
|
|
||||||
var ipsList = ips.Select(r => new TenantIpRestrictions
|
|
||||||
{
|
{
|
||||||
TenantId = tenant,
|
using var filesDbContext = _dbContextManager.CreateDbContext();
|
||||||
Ip = r.Ip,
|
using var tr = await tenantDbContext.Database.BeginTransactionAsync();
|
||||||
ForAdmin = r.ForAdmin
|
|
||||||
|
await Queries.DeleteTenantIpRestrictionsAsync(tenantDbContext, tenant);
|
||||||
|
|
||||||
|
var ipsList = ips.Select(r => new TenantIpRestrictions
|
||||||
|
{
|
||||||
|
TenantId = tenant,
|
||||||
|
Ip = r.Ip,
|
||||||
|
ForAdmin = r.ForAdmin
|
||||||
|
});
|
||||||
|
tenantDbContext.TenantIpRestrictions.AddRange(ipsList);
|
||||||
|
|
||||||
|
await tenantDbContext.SaveChangesAsync();
|
||||||
|
await tr.CommitAsync();
|
||||||
});
|
});
|
||||||
|
|
||||||
tenantDbContext.TenantIpRestrictions.AddRange(ipsList);
|
|
||||||
await tenantDbContext.SaveChangesAsync();
|
|
||||||
|
|
||||||
return ips.ToList();
|
return ips.ToList();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static file class Queries
|
static file class Queries
|
||||||
{
|
{
|
||||||
public static readonly Func<TenantDbContext, int, IAsyncEnumerable<TenantIpRestrictions>>
|
public static readonly Func<TenantDbContext, int, Task<int>>
|
||||||
TenantIpRestrictionsAsync = EF.CompileAsyncQuery(
|
DeleteTenantIpRestrictionsAsync = EF.CompileAsyncQuery(
|
||||||
(TenantDbContext ctx, int tenantId) =>
|
(TenantDbContext ctx, int tenantId) =>
|
||||||
ctx.TenantIpRestrictions.Where(r => r.TenantId == tenantId));
|
ctx.TenantIpRestrictions.Where(r => r.TenantId == tenantId)
|
||||||
|
.ExecuteDelete());
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user