From ab4847b51047c58e70f5b45a7ef26ac82aa6a8c7 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 22 Apr 2022 08:58:56 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BB=93=E5=82=A8=E4=BF=A1?= =?UTF-8?q?=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- IRaCIS.Core.API/IRaCIS.Core.API.csproj | 24 ++--- IRaCIS.Core.API/Program.cs | 4 +- IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs | 10 +- .../IRaCIS.Core.Application.csproj | 5 + .../Service/ImageAndDoc/StudyService.cs | 27 +++--- .../Service/QC/NoneDicomStudyService.cs | 46 +-------- .../Service/QC/QCOperationService.cs | 76 ++++----------- .../Triggers/SubjectVisitImageDateTrigger.cs | 95 +++++++++++++++++++ IRaCIS.Core.Domain/Visit/SubjectVisit.cs | 2 +- .../Context/IRaCISDBContext.cs | 1 - .../IRaCIS.Core.Infra.EFCore.csproj | 6 +- .../Repository/ICommandRepository.cs | 9 +- .../Repository/IQueryRepository.cs | 1 - .../Repository/Repository.cs | 8 +- 14 files changed, 165 insertions(+), 149 deletions(-) create mode 100644 IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.csproj b/IRaCIS.Core.API/IRaCIS.Core.API.csproj index 9d12b7c80..c426b6c08 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.csproj +++ b/IRaCIS.Core.API/IRaCIS.Core.API.csproj @@ -65,25 +65,27 @@ - + - - - - - + + + + + + + all runtime; build; native; contentfiles; analyzers; buildtransitive - - + + - - - + + + diff --git a/IRaCIS.Core.API/Program.cs b/IRaCIS.Core.API/Program.cs index 590c672f8..2405bb310 100644 --- a/IRaCIS.Core.API/Program.cs +++ b/IRaCIS.Core.API/Program.cs @@ -130,9 +130,9 @@ namespace IRaCIS.Core.API options.Limits.RequestHeadersTimeout = TimeSpan.FromMinutes(20); }); - webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合 + //webBuilder.UseSerilog();//在宿主机启动的时候配置serilog,与微软ILogger进行整合 webBuilder.UseStartup(); - }) + }).UseSerilog() .UseServiceProviderFactory(new AutofacServiceProviderFactory());//使用Autofac替代本身容器 //ConfigureLogging(logging => //{ diff --git a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs index eac408ead..2dcfa2add 100644 --- a/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs +++ b/IRaCIS.Core.API/_ServiceExtensions/EFSetup.cs @@ -1,4 +1,5 @@ -锘縰sing IRaCIS.Core.Infra.EFCore; +锘縰sing IRaCIS.Core.Application.Triggers; +using IRaCIS.Core.Infra.EFCore; using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.Configuration; using Microsoft.Extensions.DependencyInjection; @@ -26,7 +27,14 @@ namespace IRaCIS.Core.API //options.AddInterceptors(new AuditingInterceptor(configuration.GetSection("ConnectionStrings:RemoteNew").Value)); + //options.UseTriggers(triggerOptions => triggerOptions.AddTrigger()); + + options.UseTriggers(triggerOptions => triggerOptions.AddAssemblyTriggers(typeof(SubjectVisitImageDateTrigger).Assembly)); + }); + + + //services.AddAssemblyTriggers(typeof(SubjectVisitImageDateTrigger).Assembly); } } } diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj index 8bf21b688..7cb0fee49 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.csproj @@ -61,6 +61,7 @@ + @@ -99,4 +100,8 @@ + + + + diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 0301c7931..5376b8b70 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -102,25 +102,26 @@ namespace IRaCIS.Application.Services subjectVisit.VisitExecuted = VisitExecutedEnum.Executed; - - //澶勭悊鎷嶇墖鏃ユ湡 - var svTime = _subjectVisitRepository.Where(t => t.Id == archiveStudyCommand.SubjectVisitId).Select(t => new - { - DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime), - DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime), - NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate), - NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate) - }).FirstOrDefault(); - var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime }; - var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime }; - subjectVisit.EarliestScanDate = minArray.Min(); - subjectVisit.LatestScanDate = maxArray.Max(); + ////澶勭悊鎷嶇墖鏃ユ湡 + //var svTime = _subjectVisitRepository.Where(t => t.Id == archiveStudyCommand.SubjectVisitId).Select(t => new + //{ + // DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime), + // DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime), + // NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate), + // NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate) + //}).FirstOrDefault(); + + //var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime }; + //var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime }; + + //subjectVisit.EarliestScanDate = minArray.Min(); + //subjectVisit.LatestScanDate = maxArray.Max(); #endregion diff --git a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs index d20983c4d..6d7b88563 100644 --- a/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs +++ b/IRaCIS.Core.Application/Service/QC/NoneDicomStudyService.cs @@ -85,27 +85,7 @@ namespace IRaCIS.Core.Application.Contracts await _noneDicomStudyRepository.SaveChangesAsync(); } - var svTime = _repository.Where(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId).Select(t => new - { - DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime), - DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime), - NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate), - NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate) - }).FirstOrDefault().IfNullThrowException(); - var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime, addOrEditNoneDicomStudy.ImageDate }; - var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime, addOrEditNoneDicomStudy.ImageDate }; - - await _repository.BatchUpdateAsync(t => t.Id == addOrEditNoneDicomStudy.SubjectVisitId, u => new SubjectVisit() - { - VisitExecuted = VisitExecutedEnum.Executed, - - EarliestScanDate = minArray.Min(), - - LatestScanDate = maxArray.Max() - }); - - await _repository.SaveChangesAsync(); NoneDicomStudyAddReturnDto noneDicom = new NoneDicomStudyAddReturnDto() { @@ -130,34 +110,12 @@ namespace IRaCIS.Core.Application.Contracts if (noneDicomStudy == null) return Null404NotFound(noneDicomStudy); - await _noneDicomStudyRepository.BatchDeleteAsync(t => t.Id == noneDicomStudyId); + await _noneDicomStudyRepository.DeleteAsync(noneDicomStudy); + await _noneDicomStudyFileRepository.BatchDeleteAsync(t => t.NoneDicomStudyId == noneDicomStudyId); await _repository.BatchDeleteAsync(t => t.StudyId == noneDicomStudyId); - var svTime = await _repository.Where(t => t.Id == noneDicomStudy.SubjectVisitId).Select(t => new - { - DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime), - DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime), - NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate), - NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate) - }).FirstOrDefaultAsync().IfNullThrowException(); - - var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime }; - var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime }; - - await _repository.BatchUpdateAsync(t => t.Id == noneDicomStudy.SubjectVisitId, u => new SubjectVisit() - { - EarliestScanDate = minArray.Min(), - - LatestScanDate = maxArray.Max() - }); - - //濡傛灉鏃㈡病鏈 dicom鏁版嵁 涔熸病鏈夐潪dicom 鏂囦欢 閭d箞鎻愪氦鐘舵佸彉鏇村洖鍘 - if (await _repository.CountAsync(t => t.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0 && await _repository.CountAsync(t => t.NoneDicomStudy.SubjectVisitId == noneDicomStudy.SubjectVisitId) == 0) - { - await _repository.BatchUpdateAsync(t => t.Id == noneDicomStudy.SubjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, u => new SubjectVisit() { VisitExecuted = 0, SubmitState = SubmitStateEnum.None }); - } return ResponseOutput.Ok(); } diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index ebe4c6e0d..226b717c9 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -13,13 +13,10 @@ using MiniExcelLibs; using ExcelDataReader; using System.Text; using System.Data; -using IRaCIS.Core.Infra.EFCore; -using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Authorization; using WinSCP; using Magicodes.ExporterAndImporter.Excel; using Newtonsoft.Json; -using Magicodes.ExporterAndImporter.Csv; using IRaCIS.Core.Application.Service.Inspection.Interface; using IRaCIS.Core.Infrastructure; using IRaCIS.Core.Application.Service.Inspection.DTO; @@ -32,26 +29,24 @@ namespace IRaCIS.Core.Application.Image.QA private readonly DicomFileStoreHelper _dicomFileStoreHelper; private readonly IRepository _subjectVisitRepository; + private readonly IRepository _dicomStudyRepository; private readonly IRepository _trialRepository; - private readonly IServiceProvider serviceProvider; private readonly IMediator _mediator; private readonly IInspectionService _inspectionService; private object _locker = new object(); public QCOperationService(DicomFileStoreHelper dicomFileStoreHelper, IRepository subjectVisitRepository, IRepository trialRepository, - IServiceProvider serviceProvider, IMediator mediator, - IInspectionService sinspectionService, - IRepository _trialRepository + IInspectionService inspectionService, + IRepository dicomStudyRepository ) { _dicomFileStoreHelper = dicomFileStoreHelper; _subjectVisitRepository = subjectVisitRepository; - this._trialRepository = trialRepository; - this.serviceProvider = serviceProvider; + _dicomStudyRepository = dicomStudyRepository; _mediator = mediator; - this._inspectionService = sinspectionService; + this._inspectionService = inspectionService; } #region QC璐ㄧ枒 浠ュ強鍥炲 鍏抽棴 @@ -1015,20 +1010,23 @@ namespace IRaCIS.Core.Application.Image.QA /// SeriesCount [HttpPost, Route("{trialId:guid}/{subjectVisitId:guid}")] [TypeFilter(typeof(TrialResourceFilter))] + [UnitOfWork] public async Task DeleteStudyList(Guid[] ids, Guid subjectVisitId, Guid trialId) { //鎻愪氦浜 浣嗘槸IQC鍚屾剰鐨勬椂鍊 鏄彲浠ュ垹闄ょ殑 - if (await _repository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted && + if (await _subjectVisitRepository.AnyAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.Submitted && (!t.QCChallengeList.Any(u => u.ReuploadEnum == QCChanllengeReuploadEnum.QCAgreeUpload)))) { return ResponseOutput.NotOk("CRC Has Submited Image锛宑an not delete"); } - var DicomStudys = await _repository.GetQueryable().Where(x => ids.Contains(x.Id)).ToListAsync(); + var waitDeleteStudyList= await _dicomStudyRepository.Where(x => ids.Contains(x.Id)).ToListAsync(); List datas = new List(); - DicomStudys.ForEach(x => + waitDeleteStudyList.ForEach(x => { + + datas.Add(new DataInspection() { @@ -1054,22 +1052,13 @@ namespace IRaCIS.Core.Application.Image.QA - - - - - #region will calls error wried - //ids.ToList().ForEach(async id => - //{ - // var success1 = await _repository.DeleteFromQueryAsync(t => t.Id == id); - // var succeess2 = await _repository.DeleteFromQueryAsync(t => t.StudyId == id); - // var success3 = await _repository.DeleteFromQueryAsync(t => t.StudyId == id); - //}); - #endregion var createtime = DateTime.Now.AddMilliseconds(200); - foreach (var id in ids) + foreach (var study in waitDeleteStudyList) { - var success1 = await _repository.BatchDeleteAsync(t => t.Id == id); + + var id = study.Id; + + await _dicomStudyRepository.DeleteAsync(study,true); var succeess2 = await _repository.BatchDeleteAsync(t => t.StudyId == id); var DicomSeriess = await _repository.GetQueryable().Where(t => t.StudyId == id).Select(x => new { @@ -1135,39 +1124,6 @@ namespace IRaCIS.Core.Application.Image.QA - //涓涓瑙嗕笅闈㈡湁澶氫釜妫鏌ワ紝鎵浠ラ渶瑕佹娴 娌℃湁鐨勬椂鍊欐墠娓呯┖ 闈瀌icom 鏄鏌ユ枃浠 涓嶆槸琛ㄨ褰 - if (await _repository.CountAsync(t => t.SubjectVisitId == subjectVisitId) == 0 && await _repository.CountAsync(t => t.NoneDicomStudy.SubjectVisitId == subjectVisitId) == 0) - { - await _repository.BatchUpdateAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, - u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None }); - - //_qaNoticeRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - //_qaNoticeUserRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - //_qcChallengeRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - //_qcChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - //_trialQCQuestionAnswerRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - //_checkChallengeDialogRepository.Delete(t => t.SubjectVisitId == subjectVisitId); - } - - - var svTime = await _repository.Where(t => t.Id == subjectVisitId).Select(t => new - { - DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime), - DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime), - NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate), - NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate) - }).FirstOrDefaultAsync().IfNullThrowException(); - - var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime }; - var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime }; - - await _repository.BatchUpdateAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() - { - EarliestScanDate = minArray.Min(), - - LatestScanDate = maxArray.Max() - }); - var subvisit = await _repository.GetQueryable().FirstOrDefaultAsync(x => x.Id == subjectVisitId); diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs new file mode 100644 index 000000000..7be6aaf09 --- /dev/null +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitImageDateTrigger.cs @@ -0,0 +1,95 @@ +锘縰sing EntityFrameworkCore.Triggered; +using IRaCIS.Core.Domain.Share; + +namespace IRaCIS.Core.Application.Triggers +{ + public class SubjectVisitImageDateTrigger : IAfterSaveTrigger, IAfterSaveTrigger + { + private readonly IRepository _subjectVisitRepository; + + public SubjectVisitImageDateTrigger(IRepository subjectVisitRepository) + { + _subjectVisitRepository = subjectVisitRepository; + } + + //娉ㄦ剰鍒犻櫎涓嶈兘鐢ㄦ墿灞曟柟娉曪紝蹇呴』鐢‥F璺熻釜鐨勫疄浣 鍚﹀垯涓嶈兘鍙栧埌 SubjectVisitId + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) + { + var subjectVisitId = context.Entity.SubjectVisitId; + if (context.ChangeType == ChangeType.Added || context.ChangeType == ChangeType.Modified) + { + await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId); + + await _subjectVisitRepository.UpdatePartialFieldsNow(subjectVisitId, u => new SubjectVisit() + { + VisitExecuted = VisitExecutedEnum.Executed + }); + } + + + if (context.ChangeType == ChangeType.Deleted) + { + await UpdateSubjectVisitImageDateAsync(context.Entity.SubjectVisitId); + + await UpdateSubjectVisitSubmitStateAsync(subjectVisitId); + } + } + + public async Task AfterSave(ITriggerContext context, CancellationToken cancellationToken) + { + var subjectVisitId = context.Entity.SubjectVisitId; + if (context.ChangeType == ChangeType.Added ) + { + await UpdateSubjectVisitImageDateAsync(subjectVisitId); + + await _subjectVisitRepository.UpdatePartialFieldsNow(subjectVisitId, u => new SubjectVisit() + { + VisitExecuted = VisitExecutedEnum.Executed + }); + } + + if (context.ChangeType == ChangeType.Deleted) + { + await UpdateSubjectVisitImageDateAsync(subjectVisitId); + + await UpdateSubjectVisitSubmitStateAsync(subjectVisitId); + } + + } + + public async Task UpdateSubjectVisitSubmitStateAsync(Guid subjectVisitId) + { + //涓涓瑙嗕笅闈㈡湁澶氫釜妫鏌ワ紝鎵浠ラ渶瑕佹娴 娌℃湁鐨勬椂鍊欐墠娓呯┖ 闈瀌icom 鏄鏌ユ枃浠 涓嶆槸琛ㄨ褰 + if (await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.StudyList).CountAsync() == 0 && + await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.NoneDicomStudyList.Select(u => u.NoneDicomFileList)).CountAsync() == 0) + { + await _subjectVisitRepository.BatchUpdateAsync(t => t.Id == subjectVisitId && t.SubmitState == SubmitStateEnum.ToSubmit, + u => new SubjectVisit() { VisitExecuted = 0, SVENDTC = null, SVSTDTC = null, SubmitState = SubmitStateEnum.None }); + } + } + + + private async Task UpdateSubjectVisitImageDateAsync(Guid subjectVisitId) + { + var svTime = _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new + { + DicomStudyMinStudyTime = t.StudyList.Min(t => (DateTime?)t.StudyTime), + DicomStudyMaxStudyTime = t.StudyList.Max(t => (DateTime?)t.StudyTime), + NoneDicomStudyMinStudyTime = t.NoneDicomStudyList.Min(t => (DateTime?)t.ImageDate), + NoneDicomStudyMaxStudyTime = t.NoneDicomStudyList.Max(t => (DateTime?)t.ImageDate) + }).FirstOrDefault().IfNullThrowException(); + + + var minArray = new DateTime?[] { svTime.DicomStudyMinStudyTime, svTime.NoneDicomStudyMinStudyTime }; + var maxArray = new DateTime?[] { svTime.DicomStudyMaxStudyTime, svTime.NoneDicomStudyMaxStudyTime }; + + await _subjectVisitRepository.UpdatePartialFieldsNow(subjectVisitId, u => new SubjectVisit() + { + + EarliestScanDate = minArray.Min(), + + LatestScanDate = maxArray.Max() + }); + } + } +} \ No newline at end of file diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs index c897fce1f..82c5d536f 100644 --- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs +++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs @@ -26,7 +26,7 @@ namespace IRaCIS.Core.Domain.Models [Column(TypeName = "decimal(18,1)")] public decimal VisitNum { get; set; } //public string AnonymousVisitName { get; set; } = string.Empty; - public string BlindName { get; set; } + public string BlindName { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index c0a148cd4..539b6f78c 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -10,7 +10,6 @@ using Microsoft.EntityFrameworkCore.ChangeTracking; using System.Reflection; using EntityFramework.Exceptions.SqlServer; using IRaCIS.Core.Domain.Share; -using IRaCIS.Core.Infra.EFCore.ValueGenerator; using MassTransit; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Metadata; diff --git a/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj b/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj index a04961a99..4447e8c90 100644 --- a/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj +++ b/IRaCIS.Core.Infra.EFCore/IRaCIS.Core.Infra.EFCore.csproj @@ -17,15 +17,11 @@ - - - + - - diff --git a/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs b/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs index e04b32ca5..f221a6a83 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/ICommandRepository.cs @@ -20,14 +20,17 @@ namespace IRaCIS.Core.Infra.EFCore Task UpdatePartialFields(TEntity entity, string[] propertyNames, bool autoSave = false, bool ignoreEntityNullProperty = true, params EntityVerifyExp[] verify); + /// 鏇存柊瀛楁锛岀珛鍗虫彁浜や簨鍔 + Task UpdatePartialFieldsNow(Guid id, Expression> updateFactory, params EntityVerifyExp[] verify); - + /// 鏇存柊瀛楁锛岄粯璁や笉鎻愪氦浜嬪姟锛屼竴鑸敤浜庢湇鍔¢噷闈 鍜屽埆鐨勬搷浣 涓璧锋彁浜や簨鍔 Task UpdatePartialFields(Guid id, Expression> updateFactory, bool autoSave = false, params EntityVerifyExp[] verify); - - + /// 鎵归噺鍒犻櫎锛岀浉褰撲簬鍘熺敓sql锛 娌$敤EF璺熻釜鏂瑰紡锛堟墍鏈夋煡璇㈠嚭鏉ワ紝鍐嶅垹闄 娴垂鎬ц兘锛 Task BatchDeleteAsync(Expression> deleteFilter); + + /// 鎵归噺鏇存柊锛岀浉褰撲簬鍘熺敓sql锛 娌$敤EF璺熻釜鏂瑰紡锛堟墍鏈夋煡璇㈠嚭鏉ワ紝鍐嶆洿鏂 娴垂鎬ц兘锛 Task BatchUpdateAsync(Expression> where, Expression> updateFactory); } diff --git a/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs b/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs index fcbe2ddee..8b9a723a6 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/IQueryRepository.cs @@ -1,5 +1,4 @@ 锘縰sing AutoMapper; -using AutoMapper.EntityFrameworkCore; using IRaCIS.Core.Domain.Models; //using AutoMapper.EntityFrameworkCore; using System; diff --git a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs index 7da8c3d1a..cb9f1e431 100644 --- a/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs +++ b/IRaCIS.Core.Infra.EFCore/Repository/Repository.cs @@ -107,12 +107,7 @@ namespace IRaCIS.Core.Infra.EFCore await SaveChangesAsync(autoSave); - // 杩欓噷鐢ㄤ笉浜 switch - //switch (typeof(TEntity)) - //{ - // case typeof(Dictionary): - // break; - //} + var createtime = DateTime.Now.AddSeconds(1); @@ -193,7 +188,6 @@ namespace IRaCIS.Core.Infra.EFCore } await _dbContext.DataInspection.AddRangeAsync(datas); - await _dbContext.SaveChangesAsync(); }