Verwenden Sie Laufzeitdaten, um Zeilen in HasQueryFilter () in EF Core FDS zu filtern
Posted: 25 Feb 2025, 09:35
In meiner Anwendung gibt es einen Enum, welcher Name recordType ist und alle Tabellen ein Feld mit dem Namen 'TypeId' enthält. auf dem Benutzer typId. Auf diese Weise möchte ich Daten laden, die den Typ jedes Benutzers realisieren. < /p>
ist:
Wenn sich ein Benutzer beim System mit dem Typ des Programmierers anmelkt
Ich wollte HasQueryFilter () verwenden, aber da ich weiß, dass es nur mit statischen Feldern funktioniert und keine aktuelle Verzeichnis Beacuse verwenden kann, ist es nach der Ausführung der Anwendung möglich. < Br /> Ich habe eine Erweiterungsmethode wie folgt hinzugefügt: < /p>
Code: Select all
RecordType
Code: Select all
public enum RecordType
{
None=0,
Programmers = 1,
Marketer = 3,
Financial = 5,
}
Ich wollte HasQueryFilter () verwenden, aber da ich weiß, dass es nur mit statischen Feldern funktioniert und keine aktuelle Verzeichnis Beacuse verwenden kann, ist es nach der Ausführung der Anwendung möglich. < Br /> Ich habe eine Erweiterungsmethode wie folgt hinzugefügt: < /p>
Code: Select all
public static class QueryFilterExtensions
{
public static IQueryable FilterByUser(this IQueryable query, ICurrentUserService currentUser) where TEntity : BaseEntity
{
if (currentUser.TypeId != Domain.Enums.RecordType.None)
query = query.Where(e => e.TypeId == currentUser.TypeId);
return query;
}
}
< /code>
Auf diese Weise muss ich diese Erweiterungsmethode wie unten in allen Teil meines Lesens reagieren. < /p>
return await _dbContext.Groups.OrderBy(x => x.Id)
.FilterByUser(_currentUser)
.ProjectTo(_mapper.ConfigurationProvider)
.PaginatedListAsync(request.PageIndex, request.PageSize);