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.
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.