Нужно ли мне создавать собственного провайдера данных, если я хочу OData + EF + свои собственные контракты? - PullRequest
0 голосов
/ 21 августа 2011

Я делаю конечную точку OData (Служба данных WCF), используя Entity Framework (EF) для моей компании.

Мы поняли, что стандарт OData + EF слишком тесно связывает нас с базой данных] 1 . Поэтому я хочу добавить еще один слой между EF и OData.

Итак, мой вопрос: мне нужно сделать Провайдера пользовательских данных или есть способ подключить OData Reflection Provider к EF? Я читал о поставщике отражений, и он, кажется, работает только с данными в памяти. Я не знаю, как подключить это к способу загрузки данных в EF.

Примечание. Мои службы OData доступны только для чтения. Мне не нужно, чтобы они обновлялись.

1 Ответ

0 голосов
/ 21 августа 2011

Насколько я понимаю, ваша проблема Поставщик Reflection должен отвечать всем вашим требованиям. Вам просто нужно создать некоторый класс, который будет предоставлять свойства с IQueryable<> ваших пользовательских объектов. Поставщик Reflection работает не только с памятью - ему просто нужен класс для исследования с отражением, но реализация этого класса зависит от вас. Контексты Linq-to-Sql также доступны через поставщика отражений, и они определенно не только в памяти.

Проблема, с которой вы столкнетесь, заключается в переводе запросов к вашим пользовательским объектам в запросы к вашим сущностям, поскольку они не могут быть переведены естественным образом.

...