Page 1 of 1

Verwenden Sie Laufzeitdaten, um Zeilen in HasQueryFilter () in EF Core FDS zu filtern

Posted: 25 Feb 2025, 09:35
by Anonymous
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>

Code: Select all

RecordType
ist:

Code: Select all

public enum RecordType
{
None=0,

Programmers = 1,

Marketer = 3,

Financial = 5,
}
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

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);