• EFCore 自动更新 CreateTime, UpdateTime


    覆写SaveChanges() 即可

    public override int SaveChanges()
            {
                var ee = ChangeTracker.Entries().ToList();
                foreach (var entry in ee)
                {
                    try
                    {
                        if (entry.State == EntityState.Added)
                        {
                            Entry(entry.Entity).Property("CreateTime").CurrentValue = DateTime.Now;
                        }
                        if (entry.State == EntityState.Modified)
                        {
                            Entry(entry.Entity).Property("UpdateTime").CurrentValue = DateTime.Now;
                        }
                    }
                    catch (Exception e )
                    {
    
                        throw e;
                    }
                }
                return base.SaveChanges();
            }
    

      

     这里还可能需要写入 Creator  updater, 下面代码,可以获取操作的用户。

    public class AspNetCorePrincipalAccessor : DefaultPrincipalAccessor
    {
    public override ClaimsPrincipal Principal => _httpContextAccessor.HttpContext?.User ?? base.Principal;

    private readonly IHttpContextAccessor _httpContextAccessor;

    public AspNetCorePrincipalAccessor(IHttpContextAccessor httpContextAccessor)
    {
    _httpContextAccessor = httpContextAccessor;
    }
    }

    public class DefaultPrincipalAccessor : IPrincipalAccessor, ISingletonDependency
    {
    public virtual ClaimsPrincipal Principal => Thread.CurrentPrincipal as ClaimsPrincipal;

    public static DefaultPrincipalAccessor Instance => new DefaultPrincipalAccessor();
    }

    public class HttpContextPrincipalAccessor : DefaultPrincipalAccessor
    {
    public override ClaimsPrincipal Principal => HttpContext.Current?.User as ClaimsPrincipal ?? base.Principal;
    }

    Configuration.ReplaceService<IPrincipalAccessor, HttpContextPrincipalAccessor>(DependencyLifeStyle.Transient);

      

    气功波(18037675651)
  • 相关阅读:
    python 适合的才是最好的
    [转]linux 同步IO: sync、fsync与fdatasync
    Java Metrics系统性能监控工具
    [转]mysql共享锁和排它锁
    基于空间数据库MongoDB实现全国电影票预定系统
    sharing-jdbc分库分表规则
    乐观锁更新失败处理小坑
    通过MessageFormat进行字符格式拼接,比String.format跟方便
    通过jvisualvm监控fullgc
    防止重复提交
  • 原文地址:https://www.cnblogs.com/qgbo/p/14330367.html
Copyright © 2020-2023  润新知