不同用户角色的不同 DbContext

Different DbContexts for different user roles

所以。 Сan 你向我解释是否正确的方法是为不同类型的用户使用不同的 DBContext。

例如: 我们的 ApiController 有两种方法:

[HttpGet, Route("admin"), Authorize(RoleType.Admin)]
public Task<...> Get(... adminRequest)
{
    var query = mapper<AdminGetCommand>(adminRequest);
    return mediatr.Send(query);
}

[HttpGet, Route(""), Authorize(RoleType.User)]
public Task<...> Get(... userRequest)
{
    var query = mapper<UserGetCommand>(userRequest);
    return mediatr.Send(query);
}

之后每个命令依赖于不同的 Service/DbContext 有不同的配置。 例如:

//filter for users
...
protected override void OnModelCreating(ModelBuilder builder)
{
    base.OnModelCreating(builder);

    builder.ApplyGlobalFilters<IDeletedUtcDateTime>(e => !e.DeletedUtcDateTime.HasValue);

}
...

//filter for admin 
...
protected override void OnModelCreating(ModelBuilder builder)
{
    ...
    base.OnModelCreating(builder);
    ...
}
...

我觉得我遗漏了什么或这里有更好的解决方案

Сan you explain to me whether the correct approach would be to have different DBContext for different types of users.

如果您想要为用户提供一组不同的全局查询过滤器(或其他映射或行为更改),这是一种合理的方法。您可以简单地从 AdminDbContext 派生 UserDbContext 或从基础 DbContext 派生两者,然后在 DI 中分别注册它们。