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);