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

Ein Treffpunkt für C#-Programmierer
Anonymous
 Verwenden Sie Laufzeitdaten, um Zeilen in HasQueryFilter () in EF Core FDS zu filtern

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

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post