2013-04-30 1 views
0

Я использую веб-API для возврата Contrat EF Entity вместе с метаданными.бриз: объединение веб-ави с суффиксом сторонних сторон

Контракт предприятие имеет свойство PersonId который содержит внешний ключ к Person лица. Здесь все усложняется.

Чтобы получить объект Person, мне нужно позвонить в службу WCF. Эта служба не извлекает объект с использованием фреймворка объекта. Фактически объект Person хранится в базе данных Oracle.

Тогда на стороне клиента, мне нужно назначить что лицо лица к Договору Entity. Полагаю, мне нужно расширить модель Договор и добавить имущество типа Лицо.

Я прошел через образец Эдмунда, который кажется близким к тому, что я пытаюсь сделать.

Я не намерен вызывать службу WCF непосредственно у клиента. Вместо этого я собираюсь сделать вызов метода GetPerson в моей службе WEB API, который, в свою очередь, вызовет службу WCF.

Итак, вопрос в том, что, поскольку у меня есть доступ к службе веб-API, я должен попытаться вернуть IQueryable вместе с метаданными (звучит сложно для меня), или просто я должен вернуть данные JSON и перейти к Edmunds образец образца?

Что будет проще реализовать?

ответ

1

В примере Edmunds основное внимание уделяется клиентским запросам на службы HTTP, которые вы не контролируете.

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

Если мне нужно только связанная Person, когда я принесу одного Contract, я думаю, что я бы мой метод действия Web API возвращает Contract граф, состоящий исключительно на сервере (в том числе Person, который я извлекаться на сервере через WCF Обслуживание).

Но вы можете подумать о клиенте, которому нужно много объектов Contract - каждый из них расширен с соответствующими объектами Person - за один раз. Это то, что вы имеете в виду, когда задаете вопрос о том, как положить метод IQueryable?

Если это так, я бы все же подумал о составлении их полностью на сервере - с боковыми поездками, чтобы получить связанные объекты Person, а затем, возможно, листинг полученной коллекции как IQueryable, чтобы клиент мог фильтровать. Тьфу. Я подозреваю, что IQueryable не мудр; IEnumerable, вероятно, лучше. Вы все равно можете передать некоторые значения фильтрации методу Web API (см. EntityQuery.withParameters).

+0

Спасибо, Уорд за ответ. Я думаю, что вы правы, делать все на стороне сервера, вероятно, будет проще. Тогда у меня есть вопрос. Предположим, я создаю настраиваемый EAT-файл.Когда я вызываю метод Contracts() для запроса таблицы Контракта, я должен затем позвонить в мою службу WCF, чтобы заполнить свойство Person Контракта. Может ли метод Metadata() возвращать метаданные о типе Person? Если это так, тогда все должно быть хорошо для меня. Или мне еще нужно определить тип Person на стороне клиента? – Sam

Смежные вопросы