IncludeFilter inGeneric Repository


Domanda

Ho bisogno di un filtro in include anche. Ho lo stato di registrazione in tutte le tabelle. Quindi ho bisogno di filtrare i record sulla base di questo. Per ospitare questo, sto usando Z.EntityFramework.Plus s' IncludeFilter metodo.

Il mio codice dati generico qui sotto;

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

Quando includo la condizione dal metodo di chiamata (business class) la sua multa funzionante. Ma non voglio includere queste condizioni in tutti i luoghi. Quindi ho bisogno di cambiare questo metodo per includere la condizione where hereelfelf.

Per favore aiutami a fare. Non ho trovato nessuna estensione nel mio parametro di inclusione

Nota: ho bisogno di includere la condizione in ciascuna delle inclusioni.

Risposta popolare

In teoria, si potrebbe fare tutti i tipi di entità implementare un'interfaccia ( IRecord ?) Con la RecordStatus di proprietà su di esso.

Quindi è possibile modificare il parametro include su Expression<Func<T, IRecord>>[] .

La parte più difficile sarebbe quella di costruire nuove espressioni di include , basate su quelle che ti sono state date, aggiungendo un && r.RecordStatus == "whatever" su ognuna di esse. Il codice per fare qualcosa del genere può essere un po 'brutto, ma dovrebbe essere possibile.





Autorizzato sotto: CC-BY-SA
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché