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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Verwenden Sie Laufzeitdaten, um Zeilen in HasQueryFilter () in EF Core FDS zu filtern

by Anonymous » 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>

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

Top