我正在尝试存储数据库中发生的所有事务。
我通过在基础中添加列成功存储了“创建于”和“更新于”
using Microsoft.AspNetCore.Identity;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Core.Models
{
public class BaseModel : ConfigurationBaseModel
{
public DateTime CreatedAt { get; set; }
public DateTime? UpdatedAt { get; set; }
}
}
然后覆盖保存功能。
public override Task<int> SaveChangesAsync(CancellationToken cancellationToken = default)
{
var now = DateTime.UtcNow;
foreach (var changedEntity in ChangeTracker.Entries())
{
if (changedEntity.Entity is BaseModel entity)
{
switch (changedEntity.State)
{
case EntityState.Added:
entity.CreatedAt = now;
entity.UpdatedAt = null;
break;
case EntityState.Modified:
Entry(entity).Property(x => x.CreatedAt).IsModified = false;
entity.UpdatedAt = now;
break;
}
}
}
return base.SaveChangesAsync(cancellationToken);
}
现在我还想在存储当前用户 ID 的位置存储“创建者”和“更新者”。 有办法做到吗?