修改仓储名称

Uat_Study
hang 2022-04-26 16:56:18 +08:00
parent f118dd6e42
commit 8f6830ea8d
50 changed files with 173 additions and 167 deletions

View File

@ -104,7 +104,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This item is referenced by content of the trial infomation.");
}
var success = await _dicRepository.BatchDeleteAsync(t => t.Id == id);
var success = await _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Result(success);
}

View File

@ -50,7 +50,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{emailNoticeConfigId:guid}")]
public async Task<IResponseOutput> DeleteEmailNoticeConfig(Guid emailNoticeConfigId)
{
var success = await repository.BatchDeleteAsync(t => t.Id == emailNoticeConfigId);
var success = await repository.BatchDeleteNoTrackingAsync(t => t.Id == emailNoticeConfigId);
return ResponseOutput.Result(success);
}

View File

@ -223,7 +223,7 @@ namespace IRaCIS.Core.Application.Service
{
foreach (var item in sortDto.SortData)
{
await _frontAuditConfigRepository.BatchUpdateAsync(x => x.Id == item.Id, x => new FrontAuditConfig
await _frontAuditConfigRepository.BatchUpdateNoTrackingAsync(x => x.Id == item.Id, x => new FrontAuditConfig
{
Sort = item.Sort
});

View File

@ -42,7 +42,7 @@ namespace IRaCIS.Application.Services
// File.Delete(temp);
//}
var success =await _attachmentrepository.BatchDeleteAsync(a => a.Id == param.Id);
var success =await _attachmentrepository.BatchDeleteNoTrackingAsync(a => a.Id == param.Id);
return ResponseOutput.Result(success);
}
@ -139,7 +139,7 @@ namespace IRaCIS.Application.Services
//重传的时候,发现 相同语言的官方简历数量为2 那么将重传的简历设置为非官方
if (attachments.Count(t => t.Language == reUpload.Language && t.IsOfficial) == 2)
{
await _attachmentrepository.BatchUpdateAsync(t => t.Id == reUpload.Id, u => new Attachment()
await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == reUpload.Id, u => new Attachment()
{
Path = reUpload.Path,
CreateTime = DateTime.Now,
@ -150,7 +150,7 @@ namespace IRaCIS.Application.Services
}
else //相同语言的重传
{
await _attachmentrepository.BatchUpdateAsync(t => t.Id == reUpload.Id, u => new Attachment()
await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == reUpload.Id, u => new Attachment()
{
Path = reUpload.Path,
CreateTime = DateTime.Now,
@ -241,7 +241,7 @@ namespace IRaCIS.Application.Services
[HttpPost("{doctorId:guid}/{attachmentId:guid}/{language}")]
public async Task<IResponseOutput> SetLanguage(Guid doctorId, Guid attachmentId, int language)
{
bool result =await _attachmentrepository.BatchUpdateAsync(t => t.Id == attachmentId, a => new Attachment
bool result =await _attachmentrepository.BatchUpdateNoTrackingAsync(t => t.Id == attachmentId, a => new Attachment
{
Language = language,
IsOfficial = false

View File

@ -431,7 +431,7 @@ namespace IRaCIS.Application.Services
{
return ResponseOutput.NotOk("Resume & Consultant Agreement must be upload ");
}
var success = await _doctorRepository.BatchUpdateAsync(o => o.Id == auditResumeParam.Id, u => new Doctor()
var success = await _doctorRepository.BatchUpdateNoTrackingAsync(o => o.Id == auditResumeParam.Id, u => new Doctor()
{
CooperateStatus = auditResumeParam.CooperateStatus,
ResumeStatus = auditResumeParam.ResumeStatus,

View File

@ -92,7 +92,7 @@ namespace IRaCIS.Application.Services
[HttpDelete, Route("{doctorId:guid}")]
public async Task<IResponseOutput> DeleteEducationInfo(Guid id)
{
var success = await _educationRepository.BatchDeleteAsync(o => o.Id == id);
var success = await _educationRepository.BatchDeleteNoTrackingAsync(o => o.Id == id);
return ResponseOutput.Result(success);
}

View File

@ -35,7 +35,7 @@ namespace IRaCIS.Application.Services
}
else
{
var success = await _vacationRepository.BatchUpdateAsync(u => u.Id == param.Id,
var success = await _vacationRepository.BatchUpdateNoTrackingAsync(u => u.Id == param.Id,
h => new Vacation
{
StartDate = param.StartDate,
@ -56,7 +56,7 @@ namespace IRaCIS.Application.Services
[HttpDelete("{holidayId:guid}")]
public async Task<IResponseOutput> DeleteVacation(Guid holidayId)
{
var success = await _vacationRepository.BatchDeleteAsync(u => u.Id == holidayId);
var success = await _vacationRepository.BatchDeleteNoTrackingAsync(u => u.Id == holidayId);
return ResponseOutput.Result(success);

View File

@ -466,7 +466,7 @@ namespace IRaCIS.Core.Application.Services
return ResponseOutput.NotOk("该文档,已有用户签名 不允许删除");
}
var success = await _trialDocumentRepository.BatchDeleteAsync(t => t.Id == trialDocumentId);
var success = await _trialDocumentRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialDocumentId);
return ResponseOutput.Result(success);
}
@ -586,7 +586,7 @@ namespace IRaCIS.Core.Application.Services
}
else
{
await _trialDocumentRepository.BatchUpdateAsync(t => t.Id == documentId, u => new TrialDocument() { IsDeleted = true });
await _trialDocumentRepository.BatchUpdateNoTrackingAsync(t => t.Id == documentId, u => new TrialDocument() { IsDeleted = true });
}
return ResponseOutput.Ok();
}

View File

@ -595,7 +595,7 @@ namespace IRaCIS.Application.Services
foreach (var reviewer in needUpdatePayment)
{
await _paymentRepository.BatchUpdateAsync(u => u.YearMonth == yearMonth &&
await _paymentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
!u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment()
{
AdjustmentUSD = reviewer.AdjustUSD,
@ -638,12 +638,12 @@ namespace IRaCIS.Application.Services
// 如果是 当月计算的工作量费用 和 调整费用都为0则删除该行记录
if (addOrUpdateModel.PaymentUSD == 0 && paymentModel.AdjustmentUSD == 0)
{
success =await _paymentRepository.BatchDeleteAsync(u => u.Id == paymentModel.Id);
success =await _paymentRepository.BatchDeleteNoTrackingAsync(u => u.Id == paymentModel.Id);
//_paymentDetailRepository.Delete(u=>u.PaymentId==paymentModel.Id);
}
else
{
success = await _paymentRepository.BatchUpdateAsync(t => t.Id == paymentModel.Id, u => new Payment()
success = await _paymentRepository.BatchUpdateNoTrackingAsync(t => t.Id == paymentModel.Id, u => new Payment()
{
PaymentUSD = addOrUpdateModel.PaymentUSD,
CalculateTime = addOrUpdateModel.CalculateTime,
@ -670,7 +670,7 @@ namespace IRaCIS.Application.Services
private async Task<bool> AddOrUpdateMonthlyPaymentDetail(List<PaymentDetailCommand> addOrUpdateList, Guid paymentId)
{
//var paymentDetailIds = addOrUpdateList.Select(t => t.PaymentId).ToList();
await _paymentDetailRepository.BatchDeleteAsync(t => t.PaymentId == paymentId);
await _paymentDetailRepository.BatchDeleteNoTrackingAsync(t => t.PaymentId == paymentId);
await _paymentDetailRepository.AddRangeAsync(_mapper.Map<List<PaymentDetail>>(addOrUpdateList));
return await _paymentDetailRepository.SaveChangesAsync();
}

View File

@ -46,7 +46,7 @@ namespace IRaCIS.Application.Services
}
else
{
var success = await _exchangeRateRepository.BatchUpdateAsync(t => t.Id == model.Id, u => new ExchangeRate()
var success = await _exchangeRateRepository.BatchUpdateNoTrackingAsync(t => t.Id == model.Id, u => new ExchangeRate()
{
//YearMonth = model.YearMonth,
Rate = model.Rate,
@ -72,7 +72,7 @@ namespace IRaCIS.Application.Services
}
var success = await _exchangeRateRepository.BatchDeleteAsync(t => t.Id == id);
var success = await _exchangeRateRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Ok(success);
}

View File

@ -1256,18 +1256,18 @@ namespace IRaCIS.Application.Services
var isLock = param.IsLock;
var paymentLockSuccess = await _paymentRepository.BatchUpdateAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth, t => new Payment
var paymentLockSuccess = await _paymentRepository.BatchUpdateNoTrackingAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth, t => new Payment
{
IsLock = isLock
});
var adjustmentLockSuccess = await _payAdjustmentRepository.BatchUpdateAsync(
var adjustmentLockSuccess = await _payAdjustmentRepository.BatchUpdateNoTrackingAsync(
t => t.YearMonth == yearMonth && reviewerIds.Contains(t.ReviewerId), u =>
new PaymentAdjustment()
{
IsLock = true
});
await _doctorWorkloadRepository.BatchUpdateAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth,
await _doctorWorkloadRepository.BatchUpdateNoTrackingAsync(u => reviewerIds.Contains(u.DoctorId) && u.YearMonth == yearMonth,
t => new Workload { IsLock = true });
return ResponseOutput.Result(paymentLockSuccess || adjustmentLockSuccess);

View File

@ -255,7 +255,7 @@ namespace IRaCIS.Application.Services
{
//如果是double 不会保留两位小数
await _payAdjustmentRepository.BatchUpdateAsync(u => u.YearMonth == yearMonth &&
await _payAdjustmentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
!u.IsLock, t => new PaymentAdjustment
{
AdjustmentCNY = t.AdjustmentUSD * rate,
@ -277,7 +277,7 @@ namespace IRaCIS.Application.Services
foreach (var reviewer in needUpdatePayment)
{
await _paymentRepository.BatchUpdateAsync(u => u.YearMonth == yearMonth &&
await _paymentRepository.BatchUpdateNoTrackingAsync(u => u.YearMonth == yearMonth &&
!u.IsLock && u.DoctorId == reviewer.ReviewerId, t => new Payment()
{
AdjustmentUSD = reviewer.AdjustUSD,

View File

@ -43,7 +43,7 @@ namespace IRaCIS.Application.Services
}
else
{
var success =await _rankPriceRepository.BatchUpdateAsync(t => t.Id == addOrUpdateModel.Id, u => new RankPrice()
var success =await _rankPriceRepository.BatchUpdateNoTrackingAsync(t => t.Id == addOrUpdateModel.Id, u => new RankPrice()
{
UpdateUserId = userId,
UpdateTime = DateTime.Now,
@ -76,7 +76,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This title has been used by reviewer payment information");
}
var success = await _rankPriceRepository.BatchDeleteAsync(t => t.Id == id);
var success = await _rankPriceRepository.BatchDeleteNoTrackingAsync(t => t.Id == id);
return ResponseOutput.Result(success);
}

View File

@ -78,7 +78,7 @@ namespace IRaCIS.Application.Services
[HttpPost]
public async Task<IResponseOutput> DeleteTrialSOW(DeleteSowPathDTO trialSowPath)
{
var success = await _trialExtRepository.BatchUpdateAsync(u => u.TrialId == trialSowPath.TrialId, s => new TrialPaymentPrice
var success = await _trialExtRepository.BatchUpdateNoTrackingAsync(u => u.TrialId == trialSowPath.TrialId, s => new TrialPaymentPrice
{
SowPath = "",
SowName = "",

View File

@ -63,7 +63,7 @@ namespace IRaCIS.Application.Services
// 完善价格的 将对应的列设置为true 变更为有价格了
var aaa = await _trialRevenuesPriceVerificationRepository.BatchUpdateAsync(t => t.TrialId == model.TrialId, u => new TrialRevenuesPriceVerification()
var aaa = await _trialRevenuesPriceVerificationRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == model.TrialId, u => new TrialRevenuesPriceVerification()
{
//有价格 则设置为true 否则 该列不变
Timepoint = model.Timepoint > 0 || u.Timepoint,
@ -81,7 +81,7 @@ namespace IRaCIS.Application.Services
});
//删除所有有价格的记录 为true 表示有价格或者不需要价格 缺价格的为false
await _trialRevenuesPriceVerificationRepository.BatchDeleteAsync(t => t.TrialId == model.TrialId &&
await _trialRevenuesPriceVerificationRepository.BatchDeleteNoTrackingAsync(t => t.TrialId == model.TrialId &&
t.Timepoint&&
t.TimepointIn24H&&
t.TimepointIn48H &&
@ -101,7 +101,7 @@ namespace IRaCIS.Application.Services
[NonDynamicMethod]
public async Task<bool> DeleteTrialCost(Guid id)
{
return await _trialRevenuesPriceRepository.BatchDeleteAsync(u => u.Id == id);
return await _trialRevenuesPriceRepository.BatchDeleteNoTrackingAsync(u => u.Id == id);
}
/// <summary>

View File

@ -28,7 +28,7 @@ namespace IRaCIS.Application.Services
[NonDynamicMethod]
public async Task<IResponseOutput> AddOrUpdateVolumeRewardPriceList(IEnumerable<AwardPriceCommand> addOrUpdateModel)
{
await _volumeRewardRepository.BatchDeleteAsync(t => t.Id != Guid.Empty);
await _volumeRewardRepository.BatchDeleteNoTrackingAsync(t => t.Id != Guid.Empty);
var temp = _mapper.Map<List<VolumeReward>>(addOrUpdateModel);
await _volumeRewardRepository.AddRangeAsync(temp);

View File

@ -57,7 +57,7 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{systemAnonymizationId:guid}")]
public async Task<IResponseOutput> DeleteSystemAnonymization(Guid systemAnonymizationId)
{
var success = await systemAnonymizationRepository.BatchDeleteAsync(t => t.Id == systemAnonymizationId);
var success = await systemAnonymizationRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemAnonymizationId);
return ResponseOutput.Result(success);
}

View File

@ -70,7 +70,7 @@ namespace IRaCIS.Application.Services
//{
// return ResponseOutput.NotOk("该CRO下存在用户暂时无法删除。");
//}
var success = await _croRepository.BatchDeleteAsync(x=>x.Id== cROCompanyId);
var success = await _croRepository.BatchDeleteNoTrackingAsync(x=>x.Id== cROCompanyId);
return ResponseOutput.Result(success);
}

View File

@ -54,7 +54,7 @@ namespace IRaCIS.Application.Services
// return ResponseOutput.NotOk("该医院下存在用户,暂时无法删除。");
//}
var success = await _hospitalRepository.BatchDeleteAsync(x => x.Id == hospitalId);
var success = await _hospitalRepository.BatchDeleteNoTrackingAsync(x => x.Id == hospitalId);
return ResponseOutput.Result(success);
}

View File

@ -69,7 +69,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This site has participated in the trial and couldn't be deleted.");
}
var success = await _siteRepository.BatchDeleteAsync(x => x.Id == siteId);
var success = await _siteRepository.BatchDeleteNoTrackingAsync(x => x.Id == siteId);
return ResponseOutput.Result(success);
}
}

View File

@ -75,7 +75,7 @@ namespace IRaCIS.Application.Services
//}
var success = await _sponsorRepository.BatchDeleteAsync(x => x.Id == sponsorId);
var success = await _sponsorRepository.BatchDeleteNoTrackingAsync(x => x.Id == sponsorId);
return ResponseOutput.Result(success);
}
}

View File

@ -93,7 +93,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("不允许直接删除父节点");
}
var success =await menuRepository.BatchDeleteAsync(u => u.Id == menuId);
var success =await menuRepository.BatchDeleteNoTrackingAsync(u => u.Id == menuId);
return ResponseOutput.Result(success);
}

View File

@ -73,7 +73,7 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{systemNoticeId:guid}")]
public async Task<IResponseOutput> DeleteSystemNotice(Guid systemNoticeId)
{
var success = await _systemNoticeRepository.BatchDeleteAsync(t => t.Id == systemNoticeId);
var success = await _systemNoticeRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemNoticeId);
return ResponseOutput.Result(success);
}

View File

@ -93,13 +93,13 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("The mailbox for this user type already exists");
}
await _userRepository.UpdatePartialFieldsNowAsync(_userInfo.Id, u => new User()
await _userRepository.UpdateNowNoQueryAsync(_userInfo.Id, u => new User()
{
EMail = newEmail
});
//删除验证码历史记录
await _verificationCodeRepository.BatchDeleteAsync(t => t.UserId == _userInfo.Id && t.CodeType == 0);
await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.UserId == _userInfo.Id && t.CodeType == 0);
return ResponseOutput.Ok();
@ -113,7 +113,7 @@ namespace IRaCIS.Application.Services
{
await _userRepository.UpdatePartialFieldsNowAsync(_userInfo.Id, u => new User()
await _userRepository.UpdateNowNoQueryAsync(_userInfo.Id, u => new User()
{
Phone = newPhone
});
@ -130,7 +130,7 @@ namespace IRaCIS.Application.Services
{
return ResponseOutput.NotOk("UserId already exists");
}
await _userRepository.UpdatePartialFieldsNowAsync(_userInfo.Id, u => new User()
await _userRepository.UpdateNowNoQueryAsync(_userInfo.Id, u => new User()
{
UserName = newUserName
});
@ -148,7 +148,7 @@ namespace IRaCIS.Application.Services
public async Task<IResponseOutput> ResetPassword(Guid userId)
{
await _userRepository.UpdatePartialFieldsNowAsync(userId, u => new User()
await _userRepository.UpdateNowNoQueryAsync(userId, u => new User()
{
Password = MD5Helper.Md5(StaticData.DefaultPassword),
IsFirstAdd = true
@ -228,7 +228,7 @@ namespace IRaCIS.Application.Services
{
//删除验证码历史记录
await _verificationCodeRepository.BatchDeleteAsync(t => t.Id == verificationRecord.Id);
await _verificationCodeRepository.BatchDeleteNoTrackingAsync(t => t.Id == verificationRecord.Id);
}
}
@ -260,7 +260,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("password not change");
}
var success = await _userRepository.BatchUpdateAsync(t => t.Id == userId, u => new User()
var success = await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User()
{
Password = newPwd,
IsFirstAdd = false
@ -297,14 +297,14 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("UserId already exists");
}
await _userRepository.BatchUpdateAsync(t => t.Id == _userInfo.Id, u => new User()
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new User()
{
UserName = editPwModel.NewUserName,
});
}
var success = await _userRepository.BatchUpdateAsync(t => t.Id == _userInfo.Id, u => new User()
var success = await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new User()
{
Password = editPwModel.NewPassWord,
IsFirstAdd = false
@ -318,7 +318,7 @@ namespace IRaCIS.Application.Services
//医生密码
if (await _doctorRepository.AnyAsync(t => t.Id == _userInfo.Id && t.Password == editPwModel.OldPassWord))
{
var success = await _doctorRepository.BatchUpdateAsync(t => t.Id == _userInfo.Id, u => new Doctor()
var success = await _doctorRepository.BatchUpdateNoTrackingAsync(t => t.Id == _userInfo.Id, u => new Doctor()
{
Password = editPwModel.NewPassWord
@ -445,7 +445,7 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This user has participated in the trial and couldn't be deleted");
}
var success = await _userRepository.BatchDeleteAsync(t => t.Id == userId);
var success = await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == userId);
return ResponseOutput.Result(success);
}
@ -460,7 +460,7 @@ namespace IRaCIS.Application.Services
[HttpPost("{userId:guid}/{state:int}")]
public async Task<IResponseOutput> UpdateUserState(Guid userId, UserStateEnum state)
{
var success = await _userRepository.BatchUpdateAsync(u => u.Id == userId, t => new User
var success = await _userRepository.BatchUpdateNoTrackingAsync(u => u.Id == userId, t => new User
{
Status = state
});

View File

@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("该用户类型,被某些用户已使用,不能删除");
}
var success = await userTypeServiceRepository.BatchDeleteAsync(t => t.Id == userTypeId);
var success = await userTypeServiceRepository.BatchDeleteNoTrackingAsync(t => t.Id == userTypeId);
return ResponseOutput.Result(success);
}

View File

@ -166,7 +166,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{previousHistoryId:guid}")]
public async Task<IResponseOutput> DeletePreviousHistory(Guid previousHistoryId)
{
var success = await _previousHistoryRepository.BatchDeleteAsync(t => t.Id == previousHistoryId);
var success = await _previousHistoryRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousHistoryId);
return ResponseOutput.Result(success);
}
@ -191,7 +191,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{previousOtherId:guid}")]
public async Task<IResponseOutput> DeletePreviousOther(Guid previousOtherId)
{
var success = await _previousOtherRepository.BatchDeleteAsync(t => t.Id == previousOtherId);
var success = await _previousOtherRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousOtherId);
return ResponseOutput.Result(success);
}
@ -216,7 +216,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{trialId:guid}/{previousSurgeryId:guid}")]
public async Task<IResponseOutput> DeletePreviousSurgery(Guid previousSurgeryId)
{
var success = await _previousSurgeryRepository.BatchDeleteAsync(t => t.Id == previousSurgeryId);
var success = await _previousSurgeryRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousSurgeryId);
return ResponseOutput.Result(success);
}
@ -242,7 +242,7 @@ namespace IRaCIS.Core.Application.Contracts
public async Task<IResponseOutput> DeletePreviousPDF(Guid previousPDFId)
{
var success = await _previousPdfRepository.BatchDeleteAsync(t => t.Id == previousPDFId);
var success = await _previousPdfRepository.BatchDeleteNoTrackingAsync(t => t.Id == previousPDFId);
return ResponseOutput.Result(success);
}

View File

@ -115,7 +115,7 @@ namespace IRaCIS.Core.Application.Contracts
await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy);
await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.NoneDicomStudyId == noneDicomStudyId);
await _repository.BatchDeleteAsync<StudyMonitor>(t => t.StudyId == noneDicomStudyId);
@ -128,7 +128,7 @@ namespace IRaCIS.Core.Application.Contracts
{
var subjectVisitId = await _noneDicomStudyFileRepository.Where(t => t.Id == noneDicomStudyFileId).Select(t => t.NoneDicomStudy.SubjectVisitId).FirstOrDefaultAsync();
var success = await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyFileId);
var success = await _noneDicomStudyFileRepository.BatchDeleteNoTrackingAsync(t => t.Id == noneDicomStudyFileId);
var subvisit = await _repository.GetQueryable<SubjectVisit>().FirstOrDefaultAsync(x => x.Id == subjectVisitId);

View File

@ -408,7 +408,7 @@ namespace IRaCIS.Core.Application.Image.QA
{
return ResponseOutput.NotOk("核查通过的数据不允许申请回退");
}
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { RequestBackState = RequestBackStateEnum.CRC_RequestBack });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { RequestBackState = RequestBackStateEnum.CRC_RequestBack });
return ResponseOutput.Ok();
@ -1685,7 +1685,7 @@ namespace IRaCIS.Core.Application.Image.QA
qcChallenge.LatestMsgTime = DateTime.Now;
qcChallenge.LatestReplyUserId = _userInfo.Id;
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = true });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = true });
qcChallenge.DialogList.Add(new QCChallengeDialog()
{
@ -1790,7 +1790,7 @@ namespace IRaCIS.Core.Application.Image.QA
var dbSubjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == qcChallenge.SubjectVisitId).IfNullThrowException();
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = false });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == qcChallenge.SubjectVisitId, c => new SubjectVisit() { IsQCConfirmedReupload = false });
qcChallenge.DialogList.Add(new QCChallengeDialog()
{
@ -2023,7 +2023,7 @@ namespace IRaCIS.Core.Application.Image.QA
if (!result.IsSuccess)
{
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
return ResponseOutput.NotOk("Forward Failed" + result.Failures.ToString() + result.ToJson());
@ -2033,7 +2033,7 @@ namespace IRaCIS.Core.Application.Image.QA
}
}
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.Forwarded, ForwardUserId = _userInfo.Id, ForwardTime = DateTime.Now });
keyValuePairs["ForwardState"] = ForwardStateEnum.Forwarded;
@ -2041,7 +2041,7 @@ namespace IRaCIS.Core.Application.Image.QA
catch (Exception e)
{
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId,
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId,
u => new SubjectVisit() { ForwardState = ForwardStateEnum.ForwardFailed });
keyValuePairs["ForwardState"] = ForwardStateEnum.ForwardFailed;
}

View File

@ -46,7 +46,7 @@ namespace IRaCIS.Core.Application.Contracts
[HttpDelete("{qCQuestionConfigureId:guid}")]
public async Task<IResponseOutput> DeleteQCQuestionConfigure(Guid qCQuestionConfigureId)
{
var success = await _qcQuestionRepository.BatchDeleteAsync(t => t.Id == qCQuestionConfigureId);
var success = await _qcQuestionRepository.BatchDeleteNoTrackingAsync(t => t.Id == qCQuestionConfigureId);
return ResponseOutput.Result(success);
}

View File

@ -151,7 +151,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("已有QC审核记录不允许删除问题项");
}
var success = await _trialQcQuestionRepository.BatchDeleteAsync(t => t.Id == trialQCQuestionConfigureId);
var success = await _trialQcQuestionRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialQCQuestionConfigureId);
return ResponseOutput.Result(success);
}

View File

@ -72,7 +72,7 @@ namespace IRaCIS.Core.Application.Contracts
{
return ResponseOutput.NotOk("已锁定,不允许操作");
}
var success = await _trialSiteEquipmentSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteEquipmentSurveyId);
var success = await _trialSiteEquipmentSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteEquipmentSurveyId);
return ResponseOutput.Result(success);
}

View File

@ -375,7 +375,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("已锁定,不允许操作");
}
var success = await _trialSiteSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteSurveyId);
var success = await _trialSiteSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteSurveyId);
return ResponseOutput.Result(success);
}
@ -634,12 +634,12 @@ namespace IRaCIS.Core.Application.Contracts
if (hasSPMOrCPM)
{
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
}
else
{
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.ToSubmit });
}
}
return ResponseOutput.Ok();
@ -751,7 +751,7 @@ namespace IRaCIS.Core.Application.Contracts
smtp.MessageSent += (sender, args) =>
{
_ = _trialSiteUserSurveyRepository.BatchUpdateAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, InviteState = TrialSiteUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, SystemUserId = sysUserInfo.Id, ExpireTime = DateTime.Now.AddDays(7) }).Result;
_ = _trialSiteUserSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new TrialSiteUserSurvey() { IsGenerateSuccess = true, InviteState = TrialSiteUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, SystemUserId = sysUserInfo.Id, ExpireTime = DateTime.Now.AddDays(7) }).Result;
};
@ -799,12 +799,12 @@ namespace IRaCIS.Core.Application.Contracts
if (hasSPMOrCPM)
{
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.CRCSubmitted });
}
else
{
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.ToSubmit, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved });
}
@ -812,7 +812,7 @@ namespace IRaCIS.Core.Application.Contracts
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.SPM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CPM)
{
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved, PreliminaryUserId = _userInfo.Id, PreliminaryTime = DateTime.Now });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.CRCSubmitted, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.SPMApproved, PreliminaryUserId = _userInfo.Id, PreliminaryTime = DateTime.Now });
}
else if (_userInfo.UserTypeEnumInt == (int)UserTypeEnum.APM || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.ProjectManager)
@ -829,7 +829,7 @@ namespace IRaCIS.Core.Application.Contracts
await SendInviteEmail(new InviteEmailCommand() { TrialId = trialId, RouteUrl = siteSurvyeSubmit.RouteUrl, UserList = needGenerateList });
await _trialSiteSurveyRepository.BatchUpdateAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialSiteSurveyId && t.State == TrialSiteSurveyEnum.SPMApproved, u => new TrialSiteSurvey() { State = TrialSiteSurveyEnum.PMCreatedAndLock, ReviewerUserId = _userInfo.Id, ReviewerTime = DateTime.Now });
}

View File

@ -81,7 +81,7 @@ namespace IRaCIS.Core.Application.Contracts
return ResponseOutput.NotOk("已锁定,不允许操作");
}
var success = await _trialSiteUserSurveyRepository.BatchDeleteAsync(t => t.Id == trialSiteUserSurveyId);
var success = await _trialSiteUserSurveyRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialSiteUserSurveyId);
return ResponseOutput.Result(success);
}

View File

@ -114,15 +114,15 @@ namespace IRaCIS.Core.Application
if (signConfirmDTO.SignCode == ((int)SignEnum.TrialLogicConfim).ToString())
{
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialBasicLogicConfirmed = true });
await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialBasicLogicConfirmed = true });
}
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialProcessConfim).ToString())
{
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialProcessConfirmed = true });
await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialProcessConfirmed = true });
}
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialUrgentConfim).ToString())
{
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true });
await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { IsTrialUrgentConfirmed = true });
}
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirm).ToString())
@ -158,7 +158,7 @@ namespace IRaCIS.Core.Application
throw new BusinessValidationFailedException("父问题的序号要比子问题序号小,请确认");
}
await _trialRepository.BatchUpdateAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = DateTime.Now, QCQuestionConfirmedUserId = _userInfo.Id, IsQCQuestionConfirmed = true });
await _trialRepository.BatchUpdateNoTrackingAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = DateTime.Now, QCQuestionConfirmedUserId = _userInfo.Id, IsQCQuestionConfirmed = true });
}
@ -241,7 +241,7 @@ namespace IRaCIS.Core.Application
EnrollStatus = (int)EnrollStatus.Finished
});
await _trialRepository.BatchUpdateAsync(u => u.Id == trialId, s => new Trial { TrialFinishedTime = DateTime.UtcNow.AddHours(8) });
await _trialRepository.BatchUpdateNoTrackingAsync(u => u.Id == trialId, s => new Trial { TrialFinishedTime = DateTime.UtcNow.AddHours(8) });
}
@ -279,11 +279,9 @@ namespace IRaCIS.Core.Application
[HttpPut("{trialId:guid}/{isAbandon:bool}")]
public async Task<IResponseOutput> AbandonTrial(Guid trialId, /*Guid? signId,*/ bool isAbandon)
{
await _trialRepository.UpdatePartialFieldsNowAsync(trialId, u => new Trial() { IsDeleted = isAbandon });
await _trialRepository.UpdateNowNoQueryAsync(trialId, u => new Trial() { IsDeleted = isAbandon });
//var success = await _repository.BatchUpdateAsync<TrialSign>(t => t.Id == signId, u => new TrialSign() { IsCompleted = true });
return ResponseOutput.Ok();

View File

@ -193,11 +193,11 @@ namespace IRaCIS.Core.Application.Service
[HttpDelete("{trialExternalUserId:guid}/{isSystemUser:bool}/{systemUserId}")]
public async Task<IResponseOutput> DeleteTrialExternalUser(Guid trialExternalUserId, bool isSystemUser, Guid systemUserId)
{
var success = await _trialExternalUseRepository.BatchDeleteAsync(t => t.Id == trialExternalUserId);
var success = await _trialExternalUseRepository.BatchDeleteNoTrackingAsync(t => t.Id == trialExternalUserId);
if (isSystemUser == false)
{
await _userRepository.BatchDeleteAsync(t => t.Id == systemUserId);
await _userRepository.BatchDeleteNoTrackingAsync(t => t.Id == systemUserId);
}
return ResponseOutput.Result(success);
@ -263,7 +263,7 @@ namespace IRaCIS.Core.Application.Service
smtp.MessageSent += (sender, args) =>
{
_ = _trialExternalUseRepository.BatchUpdateAsync(t => t.Id == userInfo.Id, u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, ExpireTime = DateTime.Now.AddDays(7) }).Result;
_ = _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == userInfo.Id, u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.HasSend, IsJoin = null, ConfirmTime = null, RejectReason = String.Empty, ExpireTime = DateTime.Now.AddDays(7) }).Result;
};
@ -344,7 +344,7 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd)
{
await _userRepository.BatchUpdateAsync(t => t.Id == sysUserInfo.Id,
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id,
u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) });
}
@ -401,7 +401,7 @@ namespace IRaCIS.Core.Application.Service
await smtp.DisconnectAsync(true);
}
await _userRepository.BatchUpdateAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
}
@ -487,7 +487,7 @@ namespace IRaCIS.Core.Application.Service
await _trialSiteUserRepository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId });
await _userRepository.BatchUpdateAsync(t => t.Id == needUpdate.SystemUserId, u => new User() { Status = UserStateEnum.Enable });
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == needUpdate.SystemUserId, u => new User() { Status = UserStateEnum.Enable });
}
@ -515,7 +515,7 @@ namespace IRaCIS.Core.Application.Service
if (sysUserInfo.IsFirstAdd)
{
await _userRepository.BatchUpdateAsync(t => t.Id == sysUserInfo.Id,
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == sysUserInfo.Id,
u => new User() { Password = MD5Helper.Md5(verificationCode.ToString()) });
}
@ -666,10 +666,10 @@ namespace IRaCIS.Core.Application.Service
{
await _repository.AddAsync(new TrialUser() { TrialId = trialId, UserId = (Guid)externalUser.SystemUserId });
await _trialExternalUseRepository.BatchUpdateAsync(t => t.Id == trialExternalUserId,
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == trialExternalUserId,
u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed });
await _userRepository.BatchUpdateAsync(t => t.Id == externalUser.SystemUserId, u => new User() { Status = UserStateEnum.Enable });
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == externalUser.SystemUserId, u => new User() { Status = UserStateEnum.Enable });
await _userRepository.SaveChangesAsync();
}

View File

@ -204,7 +204,7 @@ namespace IRaCIS.Application.Services
await _repository.BatchUpdateAsync<SubjectVisit>(t => t.CurrentActionUserId == trialUser.UserId && t.TrialId == trialUser.TrialId && t.IsTake, u => new SubjectVisit() { CurrentActionUserId = null, CurrentActionUserExpireTime = null, IsTake = false });
}
await _trialUseRepository.BatchUpdateAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
await _trialUseRepository.BatchUpdateNoTrackingAsync(t => t.Id == id, u => new TrialUser() { IsDeleted = isDelete, RemoveTime = isDelete ? DateTime.Now : null });
await _repository.SaveChangesAsync();

View File

@ -438,7 +438,7 @@ namespace IRaCIS.Application.Services
}
}
await _trialRepository.BatchUpdateAsync(u => u.Id == trialId, t => new Trial() { VisitPlanConfirmed = confirmOrCancel });
await _trialRepository.BatchUpdateNoTrackingAsync(u => u.Id == trialId, t => new Trial() { VisitPlanConfirmed = confirmOrCancel });
await _repository.BatchUpdateAsync<VisitStage>(u => u.Id == trialId, t => new VisitStage() { IsConfirmed = true });

View File

@ -299,7 +299,7 @@ namespace IRaCIS.Core.Application.Services
{
var isSuccess = await _trialSiteUserRepository.BatchUpdateAsync(u => u.Id == id, u => new TrialSiteUser()
var isSuccess = await _trialSiteUserRepository.BatchUpdateNoTrackingAsync(u => u.Id == id, u => new TrialSiteUser()
{ IsDeleted = isDelete, DeletedTime = isDelete ? DateTime.Now : null });
return ResponseOutput.Ok(isSuccess);

View File

@ -100,7 +100,7 @@ namespace IRaCIS.Core.Application.Service
await _trialUserRepository.AddAsync(new TrialUser() { TrialId = trialId, UserId = userId });
await _trialExternalUseRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.SystemUserId == userId,
await _trialExternalUseRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SystemUserId == userId,
u => new TrialExternalUser() { InviteState = TrialExternalUserStateEnum.UserConfirmed });
@ -122,7 +122,7 @@ namespace IRaCIS.Core.Application.Service
}
}
await _userRepository.BatchUpdateAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
await _userRepository.BatchUpdateNoTrackingAsync(t => t.Id == userId, u => new User() { Status = UserStateEnum.Enable });
return ResponseOutput.Ok();

View File

@ -190,8 +190,8 @@ namespace IRaCIS.Application.Services
return ResponseOutput.NotOk("This subject has executed a visit with uploading study images,and couldn't be deleted.");
}
var isSuccess = await _subjectRepository.BatchDeleteAsync(u => u.Id == id);
await _subjectVisitRepository.TrackingDeleteFromQueryAsync(u => u.SubjectId == id);
var isSuccess = await _subjectRepository.BatchDeleteNoTrackingAsync(u => u.Id == id);
await _subjectVisitRepository.DeleteFromQueryAsync(u => u.SubjectId == id);
var subvisit = await _subjectVisitRepository.Where(x => x.SubjectId == id).ToListAsync();

View File

@ -161,7 +161,7 @@ namespace IRaCIS.Core.Application.Services
[HttpPut("{trialId:guid}/{subjectVisitId:guid}/{isUrgent:bool}")]
public async Task<IResponseOutput> SetSubjectVisitUrgent(Guid subjectVisitId, bool isUrgent)
{
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { IsUrgent = isUrgent });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { IsUrgent = isUrgent });
return ResponseOutput.Ok();
}
@ -197,7 +197,7 @@ namespace IRaCIS.Core.Application.Services
[TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> SetSVExecuted(Guid subjectVisitId)
{
return ResponseOutput.Result(await _subjectVisitRepository.BatchUpdateAsync(s => s.Id == subjectVisitId, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Executed }));
return ResponseOutput.Result(await _subjectVisitRepository.BatchUpdateNoTrackingAsync(s => s.Id == subjectVisitId, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Executed }));
}

View File

@ -248,7 +248,7 @@ namespace IRaCIS.Application.Services
//更新项目访视计划状态为已确认 必定生成更新的sql 通过状态改变 触发操作
await _trialRepository.UpdatePartialFieldsNowAsync(trialId, t => new Trial() { VisitPlanConfirmed = true });
await _trialRepository.UpdateNowNoQueryAsync(trialId, t => new Trial() { VisitPlanConfirmed = true });
//找到访视计划修改的Item
@ -449,7 +449,7 @@ namespace IRaCIS.Application.Services
await _repository.AddRangeAsync(subjectVisits);
//访视计划 整体状态变更为 确认
await _visitStageRepository.BatchUpdateAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true, IsHaveFirstConfirmed = true });
await _visitStageRepository.BatchUpdateNoTrackingAsync(u => u.TrialId == trialId, t => new VisitStage() { IsConfirmed = true, IsHaveFirstConfirmed = true });
await _repository.SaveChangesAsync();
return ResponseOutput.Ok();
@ -504,7 +504,7 @@ namespace IRaCIS.Application.Services
await _repository.BatchDeleteAsync<SubjectVisit>(t => t.TrialId == visitPlan.TrialId && t.VisitName == visitPlan.VisitName);
var result = await _visitStageRepository.BatchDeleteAsync(u => u.Id == id);
var result = await _visitStageRepository.BatchDeleteNoTrackingAsync(u => u.Id == id);
return ResponseOutput.Result(result);
}

View File

@ -60,7 +60,7 @@ namespace IRaCIS.Application.Services
if (attachmentViewModel.Id != Guid.Empty)
{
await _attachmentRepository.BatchDeleteAsync(t => t.Id == attachmentViewModel.Id);
await _attachmentRepository.BatchDeleteNoTrackingAsync(t => t.Id == attachmentViewModel.Id);
}
var attach = _mapper.Map<Attachment>(attachmentViewModel);
@ -83,8 +83,8 @@ namespace IRaCIS.Application.Services
[TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> DeleteReviewerAckSOW(Guid trialId, Guid doctorId, Guid attachmentId)
{
var success1 = await _attachmentRepository.BatchDeleteAsync(a => a.Id == attachmentId);
var success2 = await _enrollRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u =>
var success1 = await _attachmentRepository.BatchDeleteNoTrackingAsync(a => a.Id == attachmentId);
var success2 = await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u =>
new Enroll()
{
AttachmentId = Guid.Empty
@ -100,7 +100,7 @@ namespace IRaCIS.Application.Services
[TypeFilter(typeof(TrialResourceFilter))]
public async Task<IResponseOutput> UpdateReviewerReadingType(Guid trialId, Guid doctorId, int type)
{
var success2 = await _enrollRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u =>
var success2 = await _enrollRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.DoctorId == doctorId, u =>
new Enroll()
{
ReviewerReadingType = type
@ -625,7 +625,7 @@ namespace IRaCIS.Application.Services
await _doctorWorkloadRepository.AddAsync(workLoad);
await _enrollRepository.BatchUpdateAsync(
await _enrollRepository.BatchUpdateNoTrackingAsync(
t => t.DoctorId == workLoadAddOrUpdateModel.DoctorId && t.TrialId == workLoadAddOrUpdateModel.TrialId, u => new Enroll()
{
EnrollStatus = (int)EnrollStatus.DoctorReading,
@ -648,7 +648,7 @@ namespace IRaCIS.Application.Services
}
var success = await _doctorWorkloadRepository.BatchUpdateAsync(t => t.Id == workLoadAddOrUpdateModel.Id,
var success = await _doctorWorkloadRepository.BatchUpdateNoTrackingAsync(t => t.Id == workLoadAddOrUpdateModel.Id,
u => new Workload()
{
Timepoint = workLoadAddOrUpdateModel.Timepoint,
@ -678,7 +678,7 @@ namespace IRaCIS.Application.Services
/// </summary>
public async Task<IResponseOutput> DeleteWorkload(Guid workloadId)
{
return ResponseOutput.Result(await _doctorWorkloadRepository.BatchDeleteAsync(t => t.Id == workloadId));
return ResponseOutput.Result(await _doctorWorkloadRepository.BatchDeleteNoTrackingAsync(t => t.Id == workloadId));
}
/// <summary>

View File

@ -23,7 +23,7 @@ namespace IRaCIS.Application.Services
public string Get(testModel testModel)
{
var tt= _dicRepository.TrackingUpdateFromQueryAsync(Guid.Parse("e2b97a6c-35a6-4aa3-7f27-08da13ab33ff"), t => new Dictionary() { Description = "xxxxx" }, true).Result;
var tt= _dicRepository.UpdateFromQueryAsync(Guid.Parse("e2b97a6c-35a6-4aa3-7f27-08da13ab33ff"), t => new Dictionary() { Description = "xxxxx" }, true).Result;
//var d = _repository.Where<User>(t => t.FullName.Contains("cc")).Select(t => t.FullName).FirstOrDefault();
@ -33,7 +33,7 @@ namespace IRaCIS.Application.Services
//var dd = _dicRepository.UpdatePartialFields(Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"),
// u => new Dictionary() { ParentId = null, Code = "test" }, true);
var aaaa = _dicRepository.BatchDeleteAsync(t => t.Id == Guid.Empty).Result;
var aaaa = _dicRepository.BatchDeleteNoTrackingAsync(t => t.Id == Guid.Empty).Result;
//var ggggg = _dicRepository.UpdateFromQueryAsync(t => t.ParentId == Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"), u=>new Dictionary(){Code = "test"}).Result;

View File

@ -83,7 +83,7 @@ namespace IRaCIS.Core.Application.Triggers
sv.IsFinalVisit = true;
//末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == dbSubject.Id && t.VisitNum > sv.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == dbSubject.Id && t.VisitNum > sv.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
}
}

View File

@ -37,21 +37,21 @@ namespace IRaCIS.Core.Application.Triggers
throw new BusinessValidationFailedException("该受试者此访视后有影像上传,该访视不允许设置为末次访视");
}
await _subjectRepository.BatchUpdateAsync(t => t.Id == subjectVisit.SubjectId,
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OutOfVisit });
//末次访视后的 访视设置为不可用
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitNum > subjectVisit.VisitNum, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.Unavailable });
}
else
{
//回退
await _subjectRepository.BatchUpdateAsync(t => t.Id == subjectVisit.SubjectId,
await _subjectRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisit.SubjectId,
u => new Subject() { Status = SubjectStatus.OnVisit });
await _subjectVisitRepository.BatchUpdateAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.SubjectId == subjectVisit.SubjectId && t.VisitExecuted == VisitExecutedEnum.Unavailable, u => new SubjectVisit() { VisitExecuted = VisitExecutedEnum.UnExecuted });
}

View File

@ -25,7 +25,7 @@ namespace IRaCIS.Core.Application.Triggers
{
await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId);
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
{
VisitExecuted = VisitExecutedEnum.Executed
});
@ -46,7 +46,7 @@ namespace IRaCIS.Core.Application.Triggers
if (context.ChangeType == ChangeType.Added )
{
await UpdateSubjectVisitImageDateAsync(subjectVisitId);
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit()
{
VisitExecuted = VisitExecutedEnum.Executed
});
@ -88,7 +88,7 @@ namespace IRaCIS.Core.Application.Triggers
await _subjectVisitRepository.AddListInspectionRecordAsync(datas);
await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit,
u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None });
}
}
@ -108,7 +108,7 @@ namespace IRaCIS.Core.Application.Triggers
var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime };
var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime };
await _subjectVisitRepository.BatchUpdateAsync(t=>t.Id ==subjectVisitId, u => new SubjectVisit()
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t=>t.Id ==subjectVisitId, u => new SubjectVisit()
{
EarliestScanDate = minArray.Min(),

View File

@ -170,7 +170,7 @@ namespace IRaCIS.Core.Application.Triggers
});
//变更某一访视计划Item 受试者访视相关字段
await _subjectVisitRepository.BatchUpdateAsync(t => t.TrialId == trialId && t.VisitStageId == changedItem.Id, k => new SubjectVisit()
await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.VisitStageId == changedItem.Id, k => new SubjectVisit()
{
IsBaseLine = changedItem.IsBaseLine,
VisitName = changedItem.VisitName,

View File

@ -22,36 +22,38 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary>EF跟踪方式 生成 部分字段立即更新,默认会去处理更新更新人 更新时间</summary>
Task<bool> UpdatePartialFieldsNowAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, params EntityVerifyExp<TEntity>[] verify);
Task<bool> UpdateNowNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, params EntityVerifyExp<TEntity>[] verify);
/// <summary> EF跟踪方式 生成 部分字段更新, 通过主键id 和表达式树 更新部分字段,默认不提交事务,一般用于服务里面 和别的操作 一起提交事务</summary>
Task UpdatePartialFieldsAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify);
Task UpdateNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify);
/// <summary>批量删除相当于原生sql 没用EF跟踪方式所有查询出来再删除 浪费性能)</summary>
Task<bool> BatchDeleteAsync(Expression<Func<TEntity, bool>> deleteFilter);
Task<bool> BatchDeleteNoTrackingAsync(Expression<Func<TEntity, bool>> deleteFilter);
/// <summary>批量更新相当于原生sql 没用EF跟踪方式所有查询出来再更新 浪费性能)</summary>
Task<bool> BatchUpdateAsync(Expression<Func<TEntity, bool>> where, Expression<Func<TEntity, TEntity>> updateFactory);
Task<bool> BatchUpdateNoTrackingAsync(Expression<Func<TEntity, bool>> where, Expression<Func<TEntity, TEntity>> updateFactory);
/// <summary>批量删除EF跟踪方式所有查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary>
Task<List<TEntity>> TrackingDeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false);
Task<List<TEntity>> DeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false,bool ignoreQueryFilter = false);
Task<TEntity> TrackingDeleteFromQueryAsync(Guid id, bool autoSave = false);
Task<TEntity> DeleteFromQueryAsync(Guid id, bool autoSave = false, bool ignoreQueryFilter = false);
/// <summary> EF跟踪方式 已有查询好的,再更新部分字段 稽查的时候需要完整的实体信息</summary>
Task<bool> TrackingUpdateAsync(TEntity entity, Expression<Func<TEntity, TEntity>> updateFactory,
Task<bool> UpdateAsync(TEntity entity, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default);
/// <summary> EF跟踪方式 先查询出来,再更新部分字段 稽查的时候需要完整的实体信息</summary>
Task<TEntity> TrackingUpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default);
Task<TEntity> UpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, bool ignoreQueryFilter = false, CancellationToken cancellationToken = default);
Task TrackingUpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Task UpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default);
bool autoSave = false , bool ignoreQueryFilter = false,CancellationToken cancellationToken = default);

View File

@ -140,7 +140,7 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary> EF跟踪方式 生成 部分字段更新, 通过主键id 和表达式树 更新部分字段
/// 例如 Guid.Parse("8a90c96e-0776-4f7b-82a6-18933d339584"),u => new Dictionary() { ParentId = null, Code = "test" }默认会去处理更新更新人 更新时间</summary>
public async Task UpdatePartialFieldsAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify)
public async Task UpdateNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, params EntityVerifyExp<TEntity>[] verify)
{
await SetPartialFieldUpdateAsync(id, updateFactory, verify);
@ -150,7 +150,7 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary> EF跟踪方式 生成 部分字段立即更新,默认会去处理更新更新人 更新时间 </summary>
public async Task<bool> UpdatePartialFieldsNowAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
public async Task<bool> UpdateNowNoQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
params EntityVerifyExp<TEntity>[] verify)
{
await SetPartialFieldUpdateAsync(id, updateFactory, verify);
@ -226,27 +226,10 @@ namespace IRaCIS.Core.Infra.EFCore
public async Task TrackingUpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default)
{
if (updateFilter == null)
{
throw new ArgumentException("更新过滤条件不允许为空", nameof(updateFilter));
}
var searchEntityList = await _dbSet.AsNoTracking().Where(updateFilter).ToListAsync();
foreach (var needUpdateEntity in searchEntityList)
{
await TrackingUpdateAsync(needUpdateEntity, updateFactory, autoSave);
}
}
/// <summary>EF跟踪方式 外层先有查询好的完成实体,再更新部分字段 稽查的时候需要完整的实体信息</summary>
public async Task<bool> TrackingUpdateAsync(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, CancellationToken cancellationToken = default)
public async Task<bool> UpdateAsync(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory, bool autoSave = false, CancellationToken cancellationToken = default)
{
var entityEntry = _dbContext.Entry(waitModifyEntity);
entityEntry.State = EntityState.Detached;
@ -259,14 +242,14 @@ namespace IRaCIS.Core.Infra.EFCore
}
/// <summary>EF跟踪方式 先查询出来,再更新部分字段 稽查的时候需要完整的实体信息</summary>
public async Task<TEntity> TrackingUpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, CancellationToken cancellationToken = default)
public async Task<TEntity> UpdateFromQueryAsync(Guid id, Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, bool ignoreQueryFilter = false, CancellationToken cancellationToken = default)
{
var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
//不跟踪 查询出来的实体就是Detached
var searchEntity = await _dbSet.AsNoTracking().IgnoreQueryFilters().FirstOrDefaultAsync(t => t.Id == id);
var searchEntity = await query.FirstOrDefaultAsync(t => t.Id == id);
if (searchEntity == null)
{
@ -283,7 +266,27 @@ namespace IRaCIS.Core.Infra.EFCore
return searchEntity;
}
/// <summary>应用更新后拥有完整的实体信息,便于稽查</summary>
public async Task UpdateFromQueryAsync(Expression<Func<TEntity, bool>> updateFilter,
Expression<Func<TEntity, TEntity>> updateFactory,
bool autoSave = false, bool ignoreQueryFilter = false, CancellationToken cancellationToken = default)
{
if (updateFilter == null)
{
throw new ArgumentException("更新过滤条件不允许为空", nameof(updateFilter));
}
var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
var searchEntityList = await query.Where(updateFilter).ToListAsync();
foreach (var needUpdateEntity in searchEntityList)
{
await UpdateAsync(needUpdateEntity, updateFactory, autoSave);
}
}
/// <summary>更新后拥有完整的实体信息,便于稽查</summary>
private void ModifyPartialFiled(TEntity waitModifyEntity, Expression<Func<TEntity, TEntity>> updateFactory)
{
List<PropertyInfo> list = ((MemberInitExpression)updateFactory.Body).Bindings.Select(mb => mb.Member.Name)
@ -318,9 +321,11 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary>EF跟踪方式查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary>
public async Task<TEntity> TrackingDeleteFromQueryAsync(Guid id, bool autoSave = false)
public async Task<TEntity> DeleteFromQueryAsync(Guid id, bool autoSave = false, bool ignoreQueryFilter = false)
{
var waitDelete = await _dbSet.IgnoreQueryFilters().Where(t=>t.Id== id).FirstOrDefaultAsync();
var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
var waitDelete = await query.Where(t=>t.Id== id).FirstOrDefaultAsync();
if (waitDelete == null)
{
@ -335,9 +340,10 @@ namespace IRaCIS.Core.Infra.EFCore
/// <summary>批量删除EF跟踪方式所有查询出来再删除 浪费性能,但是稽查 或者触发某些操作时,需要知道数据库实体信息 不可避免用这种)</summary>
public async Task<List<TEntity>> TrackingDeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false)
public async Task<List<TEntity>> DeleteFromQueryAsync(Expression<Func<TEntity, bool>> deleteFilter, bool autoSave = false, bool ignoreQueryFilter = false)
{
var waitDeleteList = await _dbSet.IgnoreQueryFilters().Where(deleteFilter).ToListAsync();
var query = ignoreQueryFilter ? _dbSet.AsNoTracking().IgnoreQueryFilters() : _dbSet.AsNoTracking();
var waitDeleteList = await query.Where(deleteFilter).ToListAsync();
foreach (var deleteItem in waitDeleteList)
{
@ -357,14 +363,14 @@ namespace IRaCIS.Core.Infra.EFCore
#region 不走EF 跟踪机制的删除 更新 以及批量操作
/// <summary>批量删除相当于原生sql 没用EF跟踪方式所有查询出来再删除 浪费性能)</summary>
public async Task<bool> BatchDeleteAsync(Expression<Func<TEntity, bool>> deleteFilter)
public async Task<bool> BatchDeleteNoTrackingAsync(Expression<Func<TEntity, bool>> deleteFilter)
{
return await _dbSet.IgnoreQueryFilters().Where(deleteFilter).BatchDeleteAsync() > 0;
}
/// <summary>批量更新相当于原生sql 没用EF跟踪方式所有查询出来再更新 浪费性能)</summary>
public async Task<bool> BatchUpdateAsync(Expression<Func<TEntity, bool>> where,
public async Task<bool> BatchUpdateNoTrackingAsync(Expression<Func<TEntity, bool>> where,
Expression<Func<TEntity, TEntity>> updateFactory)
{