У меня есть запрос, как:Entity Framework Динамическая Где Статья
var function = GetSomeExpression();
using (FooModel context = new FooModel())
{
var bar = context.Bar.Where(function);
}
Я хотел бы сделать универсальный метод, который может выполняться где против различных субъектов в контексте. Цель не приходится делать context.Bar.Where, context.Car.Where, Context.Far.Where и т.д.
что-то, что не может быть сделано, но иллюстрирует цель является:
var q = context.GetObjectContext(T).Where(queryFunction);
Я изучил использование Relfection и могу получить метод Where, но не знаю, как его выполнить против контекста, проходящего в делегате. Я также посмотрел на DynamicMethod, но делать все дело с ИЛ не нравится.
То, что я до сих пор:
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();
}
Возможно ли это сделать?
Я пытался делать это некоторое время назад, и в конечном итоге создание хранилища для каждого из них. Я хотел бы знать, что думают другие люди. Конструктор.cs генерирует ctx.CreateQuery («[Bar]»); –
bendewey