Службы данных WCF, использующие данные из хранилища на основе EF - PullRequest
3 голосов
/ 11 мая 2010

У нас есть существующее хранилище, основанное на EF4 / POCO и работающее хорошо.Мы хотим добавить сервисный уровень с помощью WCF Data Services и ищем несколько рекомендаций.

До сих пор мы разработали класс, который имеет свойство IQueryable, а метод получения запускает репозиторий методом «получить всех пользователей».До сих пор проблема была двоякой:

1) Нам потребовалось украсить поле идентификатора объекта poco, чтобы сообщить службе данных, какое поле было идентификатором.Теперь это означает, что наш объект POCO не является «чистым».

2) Он не может выяснить отношения между объектами (это очевидно, я думаю).

Я остановил этоподход, и я думаю, что, возможно, мы должны выставить OBjectContext из хранилища и использовать более «автоматическую» функциональность EF.

Кто-нибудь получил какие-либо советы или примеры использования шаблона хранилища с WCF Data Services?

Ответы [ 2 ]

0 голосов
/ 13 мая 2011

Можете ли вы немного подробнее рассказать о том, что вы хотите показать, и кто будет его использовать?

Проблемы, которые я видел до сих пор в нашем проекте

  • Наличие MyRepository: Objectcontext и MyDataService: DataService разбивает логику, поэтому мы созданные помощники. Я полагаю, что мы могли бы унаследовать Repository, хотя - (буквально только подумал об этом, когда я набрал это!)
  • Перехватчики запросов и изменений - ваши друзья, но следует делегировать помощникам (или базовому классу), чтобы обеспечить DRY. т.е. - если ваш репозиторий уже имел GetAllUsers, и делает логику, которая myservice.svc / Пользователи не обрабатывают, вам может понадобиться реализовать запрос перехватчик, чтобы сделать фильтрацию - снова DRY означает помощник (или базовый метод), который оба хранилище и перехватчик могут использовать.
  • совместимость с asp.net позволяет приятно подключиться к аутентификации / авторизация - в запросе перехватчик, это хороший способ убедитесь, что вам разрешено видеть только вещи, которые вам разрешено видеть.

Пара ловушек ....

  1. Если он основан на Flash / Flex, вы вероятно есть проблемы с Flash / Flex не может использовать HTTP PUT / MERGE или DELETE. Вы обойдете это с помощью x-httpmethod-override

  2. Если это javascript / jquery, сделайте обязательно включить JSON

В целом, мне очень нравится это супер быстрый способ предоставления API, и если у вас нет тяжелой бизнес-логики, он работает хорошо.

0 голосов
/ 11 мая 2010

Я думаю, это вопрос прагматичности. Разве украшение POCO ломает что-нибудь еще? Если нет, возможно, это лучший способ сделать это.

Службы данных WCF и oData довольно новы, я также искал рекомендации, и они кажутся немного худыми.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...