Я пытаюсь понять, как лучше кэшировать.Допустим, у меня есть контроллер, который возвращает данные, специфичные для организации
У меня есть контекст, использующий mutlti-tenancy,
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Employees>().Property<string> ("TenantId").HasField("_tenantId");
// Configure entity filters
modelBuilder.Entity<Employees>().HasQueryFilter(b => EF.Property<string>(b, "TenantId") == _tenantId);
}
и некоторый метод для возвращения сотрудников в организации
public Employee[] GetEmployees(int organizationId)
{
var employees = this._context.Employees.Where(x => x.OrganizationId == organizationId).ToArray();
return employees;
}
Если бы я кешировал это, это могло бы выглядеть примерно так:
public Employee[] GetEmployees(int organizationId)
{
if(this.TryGetFromCache(organizationId, out var cachedEmployees)
{
return cachedEmployees;
}
var employees = this._context.Employees.Where(x => x.OrganizationId == organizationId).ToArray();
this.AddToCache(organizationId, employees);
return employees;
}
Моя проблема в том, как проверить, имеет ли пользователь, запрашивающий сотрудников, доступ к кэшированным сотрудникам?