IncludeFilter inGeneric Repository


Pregunta

Necesito filtrar en incluye también. Tengo el estado de registro en todas las tablas. Así que necesito filtrar los registros basados ​​en esto. Para acomodar esto, estoy usando Z.EntityFramework.Plus 's IncludeFilter método.

Mi código de datos genéricos a continuación;

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

Cuando incluyo la condición del método de llamada (clase de negocio) está funcionando bien. Pero no quiero incluir estas condiciones en todos los lugares. Por lo tanto, necesito cambiar este método para incluir la condición donde está aquí.

Por favor ayúdame a hacer. No obtuve ninguna extensión en mi parámetro de inclusión

Nota: Necesito incluir donde condición en cada uno de los incluir.

Respuesta popular

En teoría, podría hacer que todos los tipos de entidades implementen una interfaz ( IRecord ?) Con la propiedad RecordStatus en ella.

Luego podría cambiar su parámetro de Expression<Func<T, IRecord>>[] a Expression<Func<T, IRecord>>[] .

La parte difícil sería construir nuevas expresiones de include , basadas en las que se te dan, agregando un && r.RecordStatus == "whatever" en cada una de ellas. El código para hacer algo así puede ser un poco feo, pero debería ser posible.





Licencia bajo: CC-BY-SA
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué