EF CORE Global Query Filter aktivieren dynamisch deaktivierenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 EF CORE Global Query Filter aktivieren dynamisch deaktivieren

Post 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?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post