diff --git a/AsbCloudInfrastructure/Services/Cache/CacheTable.cs b/AsbCloudInfrastructure/Services/Cache/CacheTable.cs index 10fa3488..2ff98b5e 100644 --- a/AsbCloudInfrastructure/Services/Cache/CacheTable.cs +++ b/AsbCloudInfrastructure/Services/Cache/CacheTable.cs @@ -169,7 +169,7 @@ namespace AsbCloudInfrastructure.Services.Cache return SyncAsync( async (wasFree, token) => { - return wasFree ? await InternalRefreshAsync(force, token).ConfigureAwait(false) : 0; + return wasFree ? await InternalRefreshAsync(force, token) : 0; }, token); } @@ -297,7 +297,7 @@ namespace AsbCloudInfrastructure.Services.Cache dbSet.Add(entity); var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); + await InternalRefreshAsync(true, token); return affected; }, token); @@ -341,7 +341,7 @@ namespace AsbCloudInfrastructure.Services.Cache var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); + await InternalRefreshAsync(true, token); return affected; }, token); } @@ -362,7 +362,7 @@ namespace AsbCloudInfrastructure.Services.Cache dbSet.RemoveRange(dbSet.Where(predicate)); var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); + await InternalRefreshAsync(true, token); return affected; }, token); @@ -385,32 +385,61 @@ namespace AsbCloudInfrastructure.Services.Cache var entry = dbSet.Add(entity); var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); + await InternalRefreshAsync(true, token); return entry.Entity; }, token); } - public int Insert(IEnumerable newEntities) + public IEnumerable Insert(IEnumerable newEntities) { + if (newEntities is null) + return null; + var count = newEntities.Count(); + if (count == 0) + return null; + return Sync(_ => { - dbSet.AddRange(newEntities); + var entries = new List>(count); + foreach (var newEntity in newEntities) + { + var entry = dbSet.Add(newEntity); + entries.Add(entry); + } + var affected = context.SaveChanges(); if (affected > 0) InternalRefresh(true); - return affected; + else + return null; + + return entries.Select(e => e.Entity); }); } - public Task InsertAsync(IEnumerable newEntities, CancellationToken token = default) + public Task> InsertAsync(IEnumerable newEntities, CancellationToken token = default) { + if(newEntities is null) + return null; + var count = newEntities.Count(); + if (count == 0) + return null; + return SyncAsync(async (wasFree, token) => { - dbSet.AddRange(newEntities); + var entries = new List>(count); + foreach (var newEntity in newEntities) + { + var entry = dbSet.Add(newEntity); + entries.Add(entry); + } var affected = await context.SaveChangesAsync(token).ConfigureAwait(false); if (affected > 0) - await InternalRefreshAsync(true, token).ConfigureAwait(false); - return affected; + await InternalRefreshAsync(true, token); + else + return null; + + return entries.Select(e => e.Entity); }, token); }