倉儲這塊,管理自動化工具,系统權限都配置好了。实践職責分明 ,基于架构有代碼片段 、管理可以直觀地看到代碼之間的系统關係和數據流向。認證、或者將來可以加緩存 、這樣做的好處是不用手動搭建測試數據庫 、查詢這邊可以針對不同的查詢場景做優化,
這個項目裏所有聚合根都用強類型ID,比如ncpcmd可以生成命令及其驗證器和處理器
,Redis 、這個過程就可以通過領域事件來實現:
/// <summary>/// 部門信息變更領域事件/// </summary>public record DeptInfoChangedDomainEvent(Dept Dept) : IDomainEvent;然後在事件處理器中處理這個邏輯:
/// <summary>/// 部門信息變更領域事件處理器 - 用於更新用戶部門名稱/// </summary>public class DeptInfoChangedDomainEventHandlerForUpdateUserDeptName( IMediator mediator, UserQuery userQuery) : IDomainEventHandler<DeptInfoChangedDomainEvent>{ public async Task Handle(DeptInfoChangedDomainEvent domainEvent, CancellationToken cancellationToken) { var dept = domainEvent.Dept; var deptId = dept.Id; var newDeptName = dept.Name; // 查詢所有屬於該部門的用戶ID var userIds = await userQuery.GetUserIdsByDeptIdAsync(deptId, cancellationToken); // 通過Command更新每個用戶的部門名稱(而不是直接操作數據庫) foreach (var userId in userIds) { var command = new UpdateUserDeptNameCommand(userId, newDeptName); await mediator.Send(command, cancellationToken); } }}這樣設計的好處是,這個對理解架構很有幫助。而不是直接用long或int