所以С能否请您向我解释一下,正确的方法是否是为不同类型的用户提供不同的DBContext。
例如:我们有两种方法的ApicController:
[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);
}
之后,每个命令都依赖于具有不同配置的不同服务/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);
...
}
...
我觉得我错过了什么或者有更好的解决办法
首先,我的问题是“为什么你需要多种上下文,而一种上下文就足够了?“看来你是在没有必要的地方引入复杂性。