Web 协作
⚠️
文档可能已过期。
自动维护操作条目的用户信息
该功能通常用于追踪最后操作数据条目的用户,能够简化对用户信息赋值的操作。
支持功能的前提是:
-
使 DbContext 实现 IUserTraceable 接口。
-
在构造 DbContext 时,将能够获取用户信息的实例作为参数传值。
例如,在 Asp.NET Core 中使用的 IHttpContextAccessor。
在 Asp.NET Core 中配置示例如下:
public class ApplicationDbContext : DbContext, IUserTraceable
{
private readonly IHttpContextAccessor _httpContextAccessor;
public string CurrentUser => _httpContextAccessor.HttpContext?.User.Identity?.Name;
public ApplicationDbContext(
DbContextOptions<ApplicationDbContext> options,
IHttpContextAccessor httpContextAccessor
) : base(options)
{
_httpContextAccessor = httpContextAccessor;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
LinqSharpEF.OnModelCreating(this, modelBuilder);
}
}
模型示例:
public class Model
{
[Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[AutoCreatedBy]
public string CreatedBy { get; set; }
[AutoUpdatedBy]
public string UpdatedBy { get; set; }
}
每当用户登录网站后,操作该表的条目时,当前登录用户的用户名会被自动设置:
- 创建条目时,CreatedBy, UpdatedBy 会被设置;
- 更新条目时,UpdatedBy 会被设置。