Entity Framework Dynamique De La Clause Where

J'ai une requête comme:

var function = GetSomeExpression();    

using (FooModel context = new FooModel())
{
    var bar = context.Bar.Where(function);
}

Je voudrais faire une méthode générique qui peut s'exécuter Où l'encontre des Entités différentes dans le contexte. L'objectif est de ne pas avoir à faire contexte.Bar.Où, contexte.Voiture.Où, Contexte.Loin.Où, etc.

Quelque chose qui ne peut pas être fait, mais illustre l'objectif est:

var q = context.GetObjectContext(T).Where(queryFunction);

J'ai regardé dans l'aide de Relfection, et peuvent avoir de la méthode, mais ne savez pas comment l'exécuter dans le contexte de passage dans l'délégué. J'ai également regardé DynamicMethod, mais l'ensemble IL n'est pas quelque chose comme attrayant.

Ce que j'ai à ce jour:

private List<T> GetResults<T>(Expression<Func<T, bool>> queryFunction)
{
    //note: first() is for prototype, should compare param type
    MethodInfo whereMethod = typeof(Queryable).GetMethods()
        .Where(m => m.Name == "Where")
        .First().MakeGenericMethod(typeof(T)); 

    //invoke the method and return the results
    List<T> result = whereMethod.Invoke(
    //have the method info
    //have the expression
    //can reference the context 
    );

    throw new NotImplementedException();
}

Est-ce possible de le faire?

  • J'avais essayé de le faire tout à l'arrière et a terminé la construction d'un référentiel pour chacun. J'aimerais savoir ce que les autres pensent. Le concepteur.cs génère un ctx.CreateQuery<Barre>("[Bar]");
InformationsquelleAutor blu | 2009-02-10