Здесь есть несколько вариантов.
С точки зрения кодирования вы можете построить нечто общее. .Net (C#) обертывает поддержку OData вокруг интерфейса IQueryable
и атрибута [EnableQuery]
. Псевдо-код ниже показывает, как вы можете сделать это в целом с помощью WebAPI2. Работающий демо может стоять в минутах:
[EnableQuery(PageSize = 100)]
public IQueryable Get()
{
var data = (IQueryable)<get any data from the DB as IQueryable>;
return Okay(data, data.GetType());
}
Имейте в виду, что фильтрация и т.д. может в конечном итоге выполняется в памяти, поэтому пытаются толкнуть как большая часть фильтрации обратно в базу данных даст лучшую производительность. В основном я использовал это с сильно типизированными объектами, а Entity Framework толкает всю фильтрацию в БД - очень мощная и очень быстрая. Имейте в виду, что OData очень гибкая, и вам необходимо оптимизировать индексы и запросы базы данных для ваших общих случаев использования.
С точки зрения базы данных, если вы работаете в Azure, у вас есть OData на несколько кликов. See this article. Дополнительный формат хранения данных Azure Table Storage - это OData от get go. Помните, что могут быть ограничения, например, я думаю, что результаты OData от SQL Azure выгружаются в 50 строк, чтобы избежать сценариев типа отказа в обслуживании, которые разбивают вашу базу данных, особенно для запросов OData по неиндексированным данным.
Если ваш SQL находится в помещении, я не думаю, что есть что-то из коробки, однако есть несколько поставщиков, которые предлагают разъемы. Here is an example from a quick Google. У меня нет связи с ними.