IncludeFilter inGeneric Repository


Frage

Ich brauche Filter in beinhaltet auch. Ich habe den Aufzeichnungsstatus in allen Tabellen. Also muss ich die Datensätze basierend darauf filtern. Um dies zu berücksichtigen , verwende ich die IncludeFilter -Methode von Z.EntityFramework.Plus .

Mein generischer Datencode unten;

    public async Task<T> GetAsync(int id, params Expression<Func<T, object>>[] includes)
    {
        var query = _context.Set<T>().AsQueryable(); //.FindAsync(id);

        if (includes.Length > 0)
        {
            query = includes.Aggregate(query,
              (current, include) => current.IncludeFilter(include));
        }
        var item = await query.FirstOrDefaultAsync(x => x.Id == id);
        return item;
    }

Wenn ich Bedingung von der aufrufenden Methode (Geschäftsklasse) einschließe, funktioniert es gut. Aber ich möchte diese Bedingungen nicht überall mit einbeziehen. Also muss ich diese Methode ändern, um die Where-Bedingung selbst einzuschließen.

Bitte hilf mir. Ich habe keine Erweiterung in meinem include-Parameter erhalten

Hinweis: Ich muss die Bedingung in jedem Include angeben.

Beliebte Antwort

Theoretisch könnten Sie alle Entitätstypen dazu bringen, eine Schnittstelle ( IRecord ?) Mit der RecordStatus Eigenschaft zu RecordStatus .

Dann könnten Sie Ihren includes-Parameter in Expression<Func<T, IRecord>>[] .

Der knifflige Teil wäre, neue include Ausdrücke zu konstruieren, die auf den angegebenen basieren, und jedem einen && r.RecordStatus == "whatever" hinzuzufügen. Der Code, um so etwas zu tun, kann ein wenig hässlich sein, aber es sollte möglich sein.





Lizenziert unter: CC-BY-SA
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum