From 341e4321b2e1c280f6c3791345ae8d9a7718fd07 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 8 Nov 2024 17:14:41 +0800 Subject: [PATCH] =?UTF-8?q?json=20=E5=88=97=E4=BF=AE=E6=94=B9=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/TrialSiteUser/TrialConfigService.cs | 2 +- IRaCIS.Core.Domain/Trial/Trial.cs | 3 ++- .../Context/IRaCISDBContext.cs | 16 ++++++++++++++-- .../Interceptor/AuditEntityInterceptor.cs | 3 ++- 4 files changed, 19 insertions(+), 5 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs index 384dc9a7d..8f4384f13 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs @@ -911,7 +911,7 @@ namespace IRaCIS.Core.Application _mapper.Map(trialConfig, trialInfo); trialInfo.UpdateTime = DateTime.Now; - _trialRepository.MarkAsModified(trialInfo, nameof(trialInfo.TrialObjectNameList)); + //_trialRepository.MarkAsModified(trialInfo, nameof(trialInfo.TrialObjectNameList)); //await _readingQuestionCriterionTrialRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialConfig.TrialId && t.IsSigned == false, u => new ReadingQuestionCriterionTrial() { CriterionModalitys = trialConfig.Modalitys }); diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs index d4b248288..0eaf177ce 100644 --- a/IRaCIS.Core.Domain/Trial/Trial.cs +++ b/IRaCIS.Core.Domain/Trial/Trial.cs @@ -268,7 +268,8 @@ public partial class Trial : BaseFullDeleteAuditEntity //public List TrialObjectNameList => JsonConvert.DeserializeObject>(TrialObjectNameConfigStr) ?? new List(); } -public struct TrialObjectNameConfig +[ComplexType] +public class TrialObjectNameConfig { public string Name { get; set; } diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index 2349455d9..905db06d0 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -2,6 +2,7 @@ using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Infra.EFCore.Common; using IRaCIS.Core.Infrastructure.Encryption; +using IRaCIS.Core.Infrastructure.Extention; using Microsoft.EntityFrameworkCore.Storage.ValueConversion; using Newtonsoft.Json; using System.ComponentModel; @@ -69,10 +70,21 @@ public class IRaCISDBContext : DbContext v => string.IsNullOrEmpty(v) ? null : JsonConvert.DeserializeObject>(v)); }); + + modelBuilder.Entity(entity => { - entity.Property(e => e.TrialObjectNameList).HasConversion(v => v == null ? "[]" : JsonConvert.SerializeObject(v), - v => string.IsNullOrEmpty(v) ? new List() : JsonConvert.DeserializeObject>(v)); + //entity.Property(e => e.TrialObjectNameList).HasConversion(v => v == null ? "[]" : JsonConvert.SerializeObject(v), + // v => string.IsNullOrEmpty(v) ? new List() : JsonConvert.DeserializeObject>(v)); + + entity.OwnsMany(x => x.TrialObjectNameList, ownedNavigationBuilder => + { + ownedNavigationBuilder.ToJson(); + + //ownedNavigationBuilder.HasKey(t=>t.Name); + + + }); }); #region pgsql codefirst 配置 暂时屏蔽 diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs index c301521d0..3c5061e7c 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs @@ -142,7 +142,8 @@ public class AuditEntityInterceptor(IUserInfo _userInfo, var inspectionGeneralIdList = context.ChangeTracker.Entries().Where(t => typeof(DataInspection).IsAssignableFrom(t.Entity.GetType())).Select(t => ((DataInspection)t.Entity).GeneralId).ToList(); var entities = context.ChangeTracker.Entries().Where(u => (u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added)) - .Where(t => !typeof(DataInspection).IsAssignableFrom(t.Entity.GetType()) && !inspectionGeneralIdList.Contains(((Entity)t.Entity).Id)) + .Where(t => !typeof(DataInspection).IsAssignableFrom(t.Entity.GetType()) && typeof(Entity).IsAssignableFrom(t.Entity.GetType()) + && !inspectionGeneralIdList.Contains(((Entity)t.Entity).Id)) .ToList(); AuditingData auditingData = new AuditingData((IRaCISDBContext)context, _userInfo);