Я создал новый веб-проект MVC4 для создания объектов через HTTP. Так как я хотел запрос будет выполняться с базой данных, а не в памяти я включил поддержку запросаSystem.ArgumentOutOfRangeException в WebAPI + IQueryable
public static void Register(HttpConfiguration config)
{
config.EnableQuerySupport();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
вот мой IQueryable. Я использую шаблон репозитория для извлечения данных с помощью NHibernate.
public class TradeViewController : ApiController
{
public IQueryable<TradeView> Get()
{
return new TradeViewRepository().GetQueryable();
}
}
Когда я пытаюсь проверить контроллер я получаю следующее исключение
System.ArgumentOutOfRangeException: Индекс находился вне диапазона. Должен быть неотрицательным и меньше размера коллекции. Имя параметра: индекс
Вот мой тест
public void Get()
{
TradeViewController controller = new TradeViewController();
// Act
var result = controller.Get();
var count = result.Take<TradeView>(10).Count();
Assert.AreEqual(10, count);
}
Кроме того, в целом, можно ли использовать LINQ запросы к контроллерам в WebAPI?
Благодаря
Что означает 'index'? Вы уверены, что хранилище работает без проблем? – cDima
У вас действительно есть 10 записей для 'Take'? –
Да Репозиторий прекрасно сохраняет записи, и в таблице содержится более миллиона записей, поэтому это не должно быть проблемой. – Parvez