Browse Source
performance: multiple attach on Update with EfCore
pull/18795/head
Huang Tao
3 years ago
No known key found for this signature in database
GPG Key ID: F505410DF0AF9847
1 changed files with
5 additions and
4 deletions
-
framework/src/Volo.Abp.EntityFrameworkCore/Volo/Abp/Domain/Repositories/EntityFrameworkCore/EfCoreRepository.cs
|
|
|
@ -161,16 +161,17 @@ public class EfCoreRepository<TDbContext, TEntity> : RepositoryBase<TEntity>, IE |
|
|
|
{ |
|
|
|
var dbContext = await GetDbContextAsync(); |
|
|
|
|
|
|
|
dbContext.Attach(entity); |
|
|
|
|
|
|
|
var updatedEntity = dbContext.Update(entity).Entity; |
|
|
|
if (dbContext.Set<TEntity>().Local.All(e => e != entity)) |
|
|
|
{ |
|
|
|
dbContext.Update(entity); |
|
|
|
} |
|
|
|
|
|
|
|
if (autoSave) |
|
|
|
{ |
|
|
|
await dbContext.SaveChangesAsync(GetCancellationToken(cancellationToken)); |
|
|
|
} |
|
|
|
|
|
|
|
return updatedEntity; |
|
|
|
return entity; |
|
|
|
} |
|
|
|
|
|
|
|
public async override Task UpdateManyAsync(IEnumerable<TEntity> entities, bool autoSave = false, CancellationToken cancellationToken = default) |
|
|
|
|