Я пытаюсь выяснить, как получить дополнительные данные для передачи с сущностями, возвращенными из службы домена RIA.
Например, допустим, я хочу отобразить DataGrid для «Заказы» и включить столбец для общего количества элементов в заказе.
Order Num. | Cust. Name | *No. of Items Ordered*
4545 | John | 4
1234 | Mike | 7
На стороне сервера с запросом Linq я мог бы сделать:
var query =
from o in entities.Orders
select new OrderWithItemCount { Order = o, ItemCount = o.Items.Count() };
... и это вернет мои заказы вместе с количеством предметов за один раз.
Проблема в том, что я не могу найти способ распространения этих результатов через службу домена для клиента Silverlight. Я полагаю, я мог бы использовать стандартную службу WCF, но что в этом хорошего?
Обновление
Что оказалось актуальной проблемой ...
В какой-то момент я уже попробовал " Простой способ ", на который указывают Ниссан Фан и Флориан Лим. Когда я попробовал это, я не получил все свои данные. (Мне также нужно включить клиента Person
в запрос, чтобы получить его имя.) Оказывается, что то, что я считал ограничением RIA Services, на самом деле было ограничением EF 4.0, в этом высказывании entities.Orders.Include("Customer")
не будет работать, если вы выбираете новый тип, который не является Order
. Обходной путь состоит в том, чтобы явно выбрать o.Customer
в вашем операторе выбора, и EF автоматически подключит выбранного персонажа к ассоциированному свойству в Order
.