Я пытаюсь передать выражение Lambda для вызова Web API 2 и не знаю, как это сделать.Lambda Expression to Web API
Позвольте мне дать вам некоторый фон
Настройка веб-API 2, который использует Entity Framework для связи с базой данных.
Мои приложения в конечном итоге вызывают веб-API 2, чтобы иметь возможность связываться с базой данных. Моя компания в конечном итоге требует, чтобы это обеспечило дополнительную безопасность уровня доступа к данным.
Мы создали репозиторий на стороне приложения, который прекрасно общается с веб-интерфейсом. Однако одна из функций, которую мы хотим добавить, - это функция FIND, которая включает выражение Lambda.
public IEnumerable<T> FindAll(Func<T, bool> exp)
{
HttpClientHandler hndlr = new HttpClientHandler();
hndlr.UseDefaultCredentials = true;
HttpClient httpClient = new HttpClient(hndlr);
httpClient.BaseAddress = new Uri(ADMS.Utilities.Settings.DALService);
HttpResponseMessage response = httpClient.GetAsync(string.Format("api/{0}/{1}", typeof(T).Name, exp)).Result;
if (response.IsSuccessStatusCode)
{
return response.Content.ReadAsAsync<IEnumerable<T>>().Result.ToList();
}
return null;
}
Вопрос у меня есть теперь на веб-API 2 стороны в контроллере, как я могу получить это принять лямбда-выражения? Что мне нужно, чтобы поставить контроллер, чтобы это увидеть? Нужно ли преобразовать выражение Lambda?
относящийся: http://stackoverflow.com/questions/6443433/how-can-i-pass-a-lambda-expression-to-a-wcf-service. в основном, не «из коробки», вы можете сериализовать дерево выражений. НО * ты действительно ХОТИТЕ разрешить это *? – hometoast
ТОЧНО - не уверен, что я ХОЧУ, что, может быть, лучший вопрос: как я должен использовать параметр «Найти» в контроллере, чтобы я не запрашивал всю БД –
. Вы действительно делаете это на неправильной стороне воздухонепроницаемого люка, так сказать , Определите интерфейс, который достаточно хорош для ваших случаев, и обработайте фактический запрос LINQ с другой стороны. Вы хотите ограничить ввод как можно больше. И вместо передачи 'Func' вам действительно нужно некоторое дерево выражений. Идеально * не * 'Выражение >' (слишком много вариантов), но ... –
Luaan