¶Ô±ÈÐÂÎļþ |
| | |
| | | using Admin.NET.Core; |
| | | using Furion; |
| | | using Furion.DatabaseAccessor; |
| | | using Microsoft.EntityFrameworkCore; |
| | | using Microsoft.EntityFrameworkCore.Diagnostics; |
| | | using Yitter.IdGenerator; |
| | | |
| | | namespace Admin.NET.EntityFramework.Core |
| | | { |
| | | [AppDbContext("MultiTenantConnection", DbProvider.Sqlite)] |
| | | public class MultiTenantDbContext : AppDbContext<MultiTenantDbContext, MultiTenantDbContextLocator> |
| | | { |
| | | public MultiTenantDbContext(DbContextOptions<MultiTenantDbContext> options) : base(options) |
| | | { |
| | | } |
| | | |
| | | protected override void SavingChangesEvent(DbContextEventData eventData, InterceptionResult<int> result) |
| | | { |
| | | // è·åææå·²æ´æ¹çå®ä½ |
| | | var entities = eventData.Context.ChangeTracker.Entries() |
| | | .Where(u => u.State == EntityState.Modified || u.State == EntityState.Deleted || u.State == EntityState.Added) |
| | | .ToList(); |
| | | |
| | | // 夿æ¯å¦æ¯æ¼ç¤ºç¯å¢ |
| | | //var demoEnvFlag = App.GetService<ISysConfigService>().GetDemoEnvFlag().GetAwaiter().GetResult(); |
| | | //if (demoEnvFlag) |
| | | //{ |
| | | // var sysUser = entities.Find(u => u.Entity.GetType() == typeof(SysUser)); |
| | | // if (sysUser == null || string.IsNullOrEmpty((sysUser.Entity as SysUser).LastLoginTime.ToString())) // æé¤ç»å½ |
| | | // throw Oops.Oh(ErrorCode.D1200); |
| | | //} |
| | | |
| | | // å½åæä½ç¨æ·ä¿¡æ¯ |
| | | var userId = App.User.FindFirst(ClaimConst.CLAINM_USERID)?.Value; |
| | | var userName = App.User.FindFirst(ClaimConst.CLAINM_ACCOUNT)?.Value; |
| | | |
| | | foreach (var entity in entities) |
| | | { |
| | | if (entity.Entity.GetType().IsSubclassOf(typeof(DEntityBase<long, MultiTenantDbContextLocator>))) |
| | | { |
| | | var obj = entity.Entity as DEntityBase<long, MultiTenantDbContextLocator>; |
| | | if (entity.State == EntityState.Added) |
| | | { |
| | | obj.Id = YitIdHelper.NextId(); |
| | | obj.CreatedTime = DateTimeOffset.Now; |
| | | if (!string.IsNullOrEmpty(userId)) |
| | | { |
| | | obj.CreatedUserId = long.Parse(userId); |
| | | obj.CreatedUserName = userName; |
| | | } |
| | | } |
| | | else if (entity.State == EntityState.Modified) |
| | | { |
| | | obj.UpdatedTime = DateTimeOffset.Now; |
| | | obj.UpdatedUserId = long.Parse(userId); |
| | | obj.UpdatedUserName = userName; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |
| | | } |