From f7ed377572e75cdd1fb40b168009b0e54fdb7783 Mon Sep 17 00:00:00 2001 From: KharchenkoVV Date: Tue, 20 Jul 2021 12:28:56 +0500 Subject: [PATCH] CacheTable.Insert() methods fix --- .../Services/Cache/CacheTable.cs | 24 ++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/AsbCloudInfrastructure/Services/Cache/CacheTable.cs b/AsbCloudInfrastructure/Services/Cache/CacheTable.cs index a0c37248..1856acd5 100644 --- a/AsbCloudInfrastructure/Services/Cache/CacheTable.cs +++ b/AsbCloudInfrastructure/Services/Cache/CacheTable.cs @@ -206,7 +206,11 @@ namespace AsbCloudInfrastructure.Services.Cache public async Task UpsertAsync(TEntity entity, CancellationToken token = default) { var dbSet = context.Set(); - var updated = dbSet.Update(entity); + Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry updated; + if (dbSet.Contains(entity)) + updated = dbSet.Update(entity); + else + updated = dbSet.Add(entity); await context.SaveChangesAsync(token).ConfigureAwait(false); await RefreshAsync(token).ConfigureAwait(false); return updated.Entity; @@ -217,7 +221,14 @@ namespace AsbCloudInfrastructure.Services.Cache var dbSet = context.Set(); var upsertedEntries = new List(entities.Count()); foreach (var entity in entities) - upsertedEntries.Add(dbSet.Update(entity).Entity); + { + Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry updated; + if (dbSet.Contains(entity)) + updated = dbSet.Update(entity); + else + updated = dbSet.Add(entity); + upsertedEntries.Add(updated.Entity); + } context.SaveChanges(); Refresh(); return upsertedEntries; @@ -228,7 +239,14 @@ namespace AsbCloudInfrastructure.Services.Cache var dbSet = context.Set(); var upsertedEntries = new List(entities.Count()); foreach (var entity in entities) - upsertedEntries.Add(dbSet.Update(entity).Entity); + { + Microsoft.EntityFrameworkCore.ChangeTracking.EntityEntry updated; + if (dbSet.Contains(entity)) + updated = dbSet.Update(entity); + else + updated = dbSet.Add(entity); + upsertedEntries.Add(updated.Entity); + } await context.SaveChangesAsync(token).ConfigureAwait(false); await RefreshAsync(token).ConfigureAwait(false); return upsertedEntries;