Я хочу создать службу OData, которая возвращает данные из нескольких источников.По этой причине я не могу использовать WCF Data Services ни с одним из готовых поставщиков, плюс нам действительно нужен больший контроль над моделью данных.
Я вижу, что у нас есть два варианта, если мы придерживаемся продукта MSstack;
Используйте WCF с WebGet / WebInvoke для имитации API-интерфейса OData, а также для внутреннего анализа и анализа строки запроса.Например, для случаев, когда наши данные находятся в базе данных Sql, мы должны преобразовать предложение $ filter в предложение SQL where для построения нашего запроса.Обратите внимание, что здесь мы не можем использовать любой вид ORM, поскольку наша модель данных является динамической, и у нас нет классов сущностей CLR, которые могли бы быть заполнены ORM.
Мы используемСлужбы данных WCF с провайдером Custom, для этого требуется, чтобы мы передали IQueryable для набора ресурсов, что оставляет нам либо выполнение таблицы Select * FROM и использование Linq для объектов, либо реализацию нашего собственного провайдера IQueryable, который поддерживает выражения, требуемые OData.,Примет ли WCF Data Services даже IQuerable?
Что было бы проще всего реализовать?В основном мы хотим поддерживать функции $ filter в спецификациях OData, $ расширения и $ select могут появиться позже.
Кажется, стыдно отказываться от служб данных WCF, было бы предпочтительнее, если бы они могли предоставить проанализированныйЗапрос OData, который можно затем преобразовать в запрос Linq самостоятельно, не ожидая, что у вашего источника данных будет поставщик IQueryable.