diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index e9c5e06e0..7969f6488 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -367,7 +367,7 @@ namespace IRaCIS.Core.Application.Image.QA [TypeFilter(typeof(TrialResourceFilter))] public async Task CRCRequstCheckBack(Guid subjectVisitId) { - var sv = (await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId)).IfNullThrowException(); + var sv = (await _subjectVisitRepository.FirstOrDefaultNoTrackingAsync(t => t.Id == subjectVisitId)).IfNullThrowException(); if (sv.CheckState == CheckStateEnum.CVPassed) diff --git a/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs b/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs index 0154e2f6d..21eebb9b4 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs @@ -89,6 +89,8 @@ namespace IRaCIS.Core.Infra.EFCore Task FirstOrDefaultAsync(Expression> exp = null, bool ignoreQueryFilters = false); + Task FirstOrDefaultNoTrackingAsync(Expression> exp = null, bool ignoreQueryFilters = false); + Task AnyAsync(Expression> exp, bool ignoreQueryFilters = false); Task MaxAsync(Expression> selector); diff --git a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs index 61dce6591..ee47c9f1c 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs @@ -1412,6 +1412,32 @@ namespace IRaCIS.Core.Infra.EFCore } + /// + /// 不跟踪 + /// + /// + /// + /// + public async Task FirstOrDefaultNoTrackingAsync(Expression> exp = null, bool ignoreQueryFilters = false) + { + + var query = _dbSet.AsNoTracking().AsQueryable(); + + if (ignoreQueryFilters) + { + query = query.IgnoreQueryFilters(); + } + + + if (exp != null) + { + query = query.Where(exp); + } + + return await query.AsNoTracking().FirstOrDefaultAsync().ConfigureAwait(false); + + } + #endregion