EFCore 自动更新 CreateTime, UpdateTime
2021-01-26 15:00 qgbo 阅读(937) 评论(0) 收藏 举报覆写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);
浙公网安备 33010602011771号