forked from ddrilling/AsbCloudServer
refact update role method
This commit is contained in:
parent
54178e8923
commit
d35550380c
@ -1,5 +1,6 @@
|
|||||||
using AsbCloudDb.Model.Subsystems;
|
using AsbCloudDb.Model.Subsystems;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.ChangeTracking;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
@ -362,5 +363,7 @@ namespace AsbCloudDb.Model
|
|||||||
var sql = $"REFRESH MATERIALIZED VIEW {materializedViewName};";
|
var sql = $"REFRESH MATERIALIZED VIEW {materializedViewName};";
|
||||||
return Database.ExecuteSqlRawAsync(sql, token);
|
return Database.ExecuteSqlRawAsync(sql, token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ChangeTracker GetChangeTracker() => ChangeTracker;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -73,6 +73,7 @@ namespace AsbCloudDb.Model
|
|||||||
DbSet<TEntity> Set<TEntity>(string name) where TEntity : class;
|
DbSet<TEntity> Set<TEntity>(string name) where TEntity : class;
|
||||||
DbSet<TEntity> Set<TEntity>() where TEntity : class;
|
DbSet<TEntity> Set<TEntity>() where TEntity : class;
|
||||||
EntityEntry<TEntity> Entry<TEntity>([NotNull] TEntity entity) where TEntity : class;
|
EntityEntry<TEntity> Entry<TEntity>([NotNull] TEntity entity) where TEntity : class;
|
||||||
|
ChangeTracker GetChangeTracker();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -107,7 +107,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
var local = dbContext.Set<User>()
|
var local = dbContext.Set<User>()
|
||||||
.Local
|
.Local
|
||||||
.FirstOrDefault(entry => entry.Id.Equals(entity.Id));
|
.FirstOrDefault(entry => entry.Id.Equals(entity.Id));
|
||||||
if (local != null)
|
if (local is not null)
|
||||||
{
|
{
|
||||||
dbContext.Entry(local).State = EntityState.Detached;
|
dbContext.Entry(local).State = EntityState.Detached;
|
||||||
}
|
}
|
||||||
@ -117,8 +117,6 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
return entity.Id;
|
return entity.Id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public async Task<int> DeleteAsync(int id, CancellationToken token)
|
public async Task<int> DeleteAsync(int id, CancellationToken token)
|
||||||
{
|
{
|
||||||
var dto = (await GetCacheUserAsync(token)).FirstOrDefault(u => u.Id == id);
|
var dto = (await GetCacheUserAsync(token)).FirstOrDefault(u => u.Id == id);
|
||||||
@ -221,7 +219,7 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
var relations = (await GetCacheRelationUserUserRoleAsync(token)).Where(r => r.IdUser == idUser);
|
var relations = (await GetCacheRelationUserUserRoleAsync(token)).Where(r => r.IdUser == idUser);
|
||||||
dbContext.RelationUserUserRoles.RemoveRange(relations);
|
dbContext.RelationUserUserRoles.RemoveRange(relations);
|
||||||
|
|
||||||
if (newRoles?.Any() == true)
|
if (newRoles?.Any() is true)
|
||||||
await dbContext.RelationUserUserRoles.AddRangeAsync(newRoles.Select(role => new RelationUserUserRole
|
await dbContext.RelationUserUserRoles.AddRangeAsync(newRoles.Select(role => new RelationUserUserRole
|
||||||
{
|
{
|
||||||
IdUser = idUser,
|
IdUser = idUser,
|
||||||
@ -236,7 +234,8 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
where TEntity : class
|
where TEntity : class
|
||||||
{
|
{
|
||||||
async Task<TEntity[]> factory(CancellationToken token)
|
async Task<TEntity[]> factory(CancellationToken token)
|
||||||
=> await query.AsNoTracking().ToArrayAsync(token);
|
=> await query.ToArrayAsync(token);
|
||||||
|
dbContext.GetChangeTracker().Clear();
|
||||||
var cache = await GetOrAddCacheAsync(tag, factory, obsolescence, token);
|
var cache = await GetOrAddCacheAsync(tag, factory, obsolescence, token);
|
||||||
return cache.Select(convert);
|
return cache.Select(convert);
|
||||||
}
|
}
|
||||||
@ -244,7 +243,8 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
where TEntity : class
|
where TEntity : class
|
||||||
{
|
{
|
||||||
async Task<TEntity[]> factory(CancellationToken token)
|
async Task<TEntity[]> factory(CancellationToken token)
|
||||||
=> await query.AsNoTracking().ToArrayAsync(token);
|
=> await query.ToArrayAsync(token);
|
||||||
|
dbContext.GetChangeTracker().Clear();
|
||||||
var cache = await GetOrAddCacheAsync(tag, factory, obsolescence, token);
|
var cache = await GetOrAddCacheAsync(tag, factory, obsolescence, token);
|
||||||
return cache;
|
return cache;
|
||||||
}
|
}
|
||||||
@ -252,7 +252,8 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
where TEntity : class
|
where TEntity : class
|
||||||
{
|
{
|
||||||
TEntity[] factory()
|
TEntity[] factory()
|
||||||
=> query.AsNoTracking().ToArray();
|
=> query.ToArray();
|
||||||
|
dbContext.GetChangeTracker().Clear();
|
||||||
var cache = GetOrAddCache(tag, factory, obsolescence);
|
var cache = GetOrAddCache(tag, factory, obsolescence);
|
||||||
return cache.Select(convert);
|
return cache.Select(convert);
|
||||||
}
|
}
|
||||||
@ -260,7 +261,8 @@ namespace AsbCloudInfrastructure.Repository
|
|||||||
where TEntity : class
|
where TEntity : class
|
||||||
{
|
{
|
||||||
TEntity[] factory()
|
TEntity[] factory()
|
||||||
=> query.AsNoTracking().ToArray();
|
=> query.ToArray();
|
||||||
|
dbContext.GetChangeTracker().Clear();
|
||||||
var cache = GetOrAddCache(tag, factory, obsolescence);
|
var cache = GetOrAddCache(tag, factory, obsolescence);
|
||||||
return cache;
|
return cache;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user