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