Page 1 of 1

EF CORE Global Query Filter aktivieren dynamisch deaktivieren

Posted: 17 Feb 2025, 08:24
by Anonymous
Ich versuche, einen EF Core Global Query -Filter mit Deaktivierungsbedingungen zu implementieren. Nach meinem Szenario habe ich ein Flag namens " filterstatus " und seine Wertänderungen für jeden Benutzer. Daher wird jeder Benutzer im System filterstatus Wert geändert. Ich möchte einen globalen Abfragefilter implementieren, um Daten gemäß dem filterstatus Flag zu filtern. Aussage des globalen Abfragedilters: < /p>

Code: Select all

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);
}
});
}
}
Führen Sie im obigen Code immer das else -Teil aus, selbst wenn die userClaimFilter.filterstatus wahr ist. Ich denke Wert?