служба данных wcf с Entity Framework - PullRequest
2 голосов
/ 03 августа 2011

Я пытаюсь создать проект службы данных WCF с использованием Entity Framework. (Я новичок в обоих).

Я создал сущности, используя БД. Теперь я создал сервисную операцию, которая возвращает IQueryable<entity>.

Моя проблема

  1. Я не хочу возвращать весь набор столбцов в сущности. Я не могу удалить их из сущности, так как она не равна нулю. Как этого избежать?

  2. У меня есть несколько столбцов FK, и мне нужны другие сведения о столбцах таблицы. Как включить столбцы из другой таблицы?

  3. Почему невозможно использовать класс POCO, возвращаемый из службы данных WCF?

  4. Как мне отформатировать ответ; то есть добавить несколько дополнительных деталей к ответу, таких как номер страницы и т. д., изменить теги xml, удалить несколько таких деталей, как "link rel"?

Я много чего пытался достичь 1 и 2. Но, наконец, я понял, что могу использовать сущность только так, как она есть.

Понятия не имею о 4.

Будем благодарны за любые предложения.

Ответы [ 2 ]

1 голос
/ 03 августа 2011

1.Я не хочу возвращать весь набор столбцов в сущности.
2.У меня есть несколько столбцов FK, и мне нужны другие сведения о столбцах таблицы.

Для этого вы должны определить новый класс, который соответствует тому, что вам нужно / что вы хотите, чтобы ваши клиенты видели.Это может быть прямой класс POCO - без особых требований.Соберите этот класс для каждой сущности, оставив ненужные столбцы и выбрав дополнительное поле или два для столбцов FK в этот новый класс.Возврат IQueryable<YourNewClass> вместо класса сущности напрямую.

Чтобы избежать огромных операторов назначения влево-вправо только для заполнения свойств нового класса, вы должны взглянуть на AutoMapper что позволяет очень легко копировать классы, которые очень похожи друг на друга (например, отсутствуют или добавляются несколько свойств).

4.Как мне отформатировать ответ;т. е. добавить несколько дополнительных деталей к ответу, например номер страницы и т. д., изменить теги xml, удалить несколько таких деталей, как "link rel"?

Это невозможно - протокол OData очень строго определяетчто будет в сообщении, какие есть ссылки и т. д. Если вы не можете с этим смириться - вам придется свернуть свою собственную службу REST WCF и вообще отбросить службу данных WCF.

ПроверкаИз WCF REST Developer Center на MSDN , если вы хотите более тщательно исследовать этот маршрут.

Обновление: эта ссылка, кажется, перестала работать - попробуйте Обзор программирования веб-соединений WCF вместо.

0 голосов
/ 07 апреля 2013

Убедитесь, что у вас есть свойство Id или вы указали либо [Key], либо [DataServiceKey("Your_Custom_ID_Property")]. Для меня это решило проблему

...