From a3b0b24db6c083b4da27d90368bc3b6641c81858 Mon Sep 17 00:00:00 2001 From: zpc Date: Sat, 21 Sep 2024 15:52:35 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MultiTenant/MultiTenantDbContext.cs | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/0-core/HuanMeng.DotNetCore/MultiTenant/MultiTenantDbContext.cs b/src/0-core/HuanMeng.DotNetCore/MultiTenant/MultiTenantDbContext.cs index cc8662d..29710ff 100644 --- a/src/0-core/HuanMeng.DotNetCore/MultiTenant/MultiTenantDbContext.cs +++ b/src/0-core/HuanMeng.DotNetCore/MultiTenant/MultiTenantDbContext.cs @@ -75,6 +75,27 @@ namespace HuanMeng.DotNetCore.MultiTenant } return base.SaveChanges(); } + + public override Task SaveChangesAsync(CancellationToken cancellationToken = default) + { + if (TenantInfo?.TenantId != null) + { + var entries = ChangeTracker.Entries() + .Where(e => e.Entity is IMultiTenantEntity && + (e.State == EntityState.Added || e.State == EntityState.Modified)) + .Select(e => e.Entity as IMultiTenantEntity) + .ToList(); + + foreach (var entity in entries) + { + if (entity?.TenantId == null || entity?.TenantId == Guid.Empty) + { + entity.TenantId = TenantInfo.TenantId; + } + } + } + return base.SaveChangesAsync(cancellationToken); + } } }