Ef core global filter Query позволяет динамически отключить отключениеC#

Место общения программистов C#
Ответить
Anonymous
 Ef core global filter Query позволяет динамически отключить отключение

Сообщение Anonymous »

Я пытаюсь внедрить глобальный фильтр EF Core Global запроса с включением отключения условий. Согласно моим сценарию, у меня есть флаг под названием « filterStatus », и его значение изменяется для каждого пользователя. Таким образом, любой пользователь вошел в систему filterStatus , изменяется. Я хочу реализовать глобальный фильтр запросов для фильтрации данных в соответствии с флагом filterStatus . Заявление глобального фильтра запроса: < /p>

Код: Выделить всё

public partial class TableDbContext : DbContext, IDbContext
{
protected Guid TenantId { get; set; }
protected UserClaimFilter UserClaimFilter { get; set; } = new UserClaimFilter();

protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var tenant = _httpContextAccessor?.HttpContext?.GetTenant();
if (tenant != null)
{
TenantId = Guid.Parse(tenant.Id);
var userClaims = _httpContextAccessor.HttpContext.Session
.GetObject(DefaultConstants.SessionUserClaimStore);

if (userClaims != null)
{
UserClaimFilter = userClaims;
}
}
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity(entity =>
{
if (UserClaimFilter.FilterStatus && UserClaimFilter.RegionClaims.Any())
{
entity.HasQueryFilter(a => a.TenantId == TenantId
&& UserClaimFilter.RegionClaims.Contains(a.RegionCode));
}
else
{
entity.HasQueryFilter(a => a.TenantId == TenantId);
}
});
}
}
В приведенном выше коде всегда запускайте часть Else, даже если userclaimfilter.filterstatus верно. Я думаю, что из-за первого запуска значения по умолчанию по умолчанию userclaimfilter.filterstatus является ложным. значение?


Подробнее здесь: https://stackoverflow.com/questions/711 ... ynamically
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»