using IRaCIS.Core.Domain; using IRaCIS.Core.Domain.Models; using Microsoft.EntityFrameworkCore.ChangeTracking; namespace IRaCIS.Core.Infra.EFCore; public static class DBContext_Ext { public static void AddDomainEvents(this DbContext context) { var changeTracker = context.ChangeTracker; } public static void AddDomainCommands(this DbContext context) { var changeTracker = context.ChangeTracker; // 遍历 ChangeTracker 中的实体 foreach (var entry in changeTracker.Entries()) { var subject = entry.Entity; if (entry.State == EntityState.Added) { // 受试者添加 触发访视自动添加 var addedEvent = new AddSubjectTriggerCommand { SubjectId = subject.Id, TrialId = subject.TrialId, TrialSiteId = subject.TrialSiteId }; subject.AddDomainCommand(addedEvent); } } } }