Соедините две таблицы и верните весь результат, используя сервисы EF 4 и RIA - PullRequest
0 голосов
/ 23 января 2011

Я создаю приложение Silverlight, используя службы RIA и платформу сущностей 4.0.У меня есть две таблицы в моей базе данных SQL, к которым я хотел бы присоединиться и вернуть как один результат.Во-первых, две мои таблицы:


Room:
id
RoomName
BuildingId

Building:
id
BuildingName

Моя служба домена по умолчанию сгенерировала метод GetRooms по умолчанию:

Public Function GetRooms() As IQueryable(Of Room)
    Return Me.ObjectContext.Rooms
End Function

Но это не похоже насодержат сведения о моих зданиях, даже если между Room.BuildingId и Building.Id существует ссылочная целостность.Может кто-нибудь указать мне правильное направление?

Ответы [ 3 ]

1 голос
/ 23 января 2011

Если вы хотите, чтобы здания были включены, вам нужно использовать .Include("Building") для вашего кода:

Public Function GetRooms() As IQueryable(Of Room)
    Return Me.ObjectContext.Rooms.Include("Building")
End Function
1 голос
/ 23 января 2011

В зависимости от ваших требований, вы можете рассмотреть возможность возврата коллекции объектов «модели презентации» (каждый объект содержит информацию как о комнате , так и здании), а не об объектах. Вы определяете класс в проекте сервера и заполняете коллекцию объектов этого типа данными из модели сущностей в операции домена (которая передается клиенту). Больше информации об этом здесь: http://msdn.microsoft.com/en-us/library/ee707347(VS.91).aspx.

1 голос
/ 23 января 2011

Для оптимизации таблиц, связанных с производительностью, по умолчанию они не включены в запрос. Вам нужно пометить таблицы, которые вы хотите включить в свой запрос, с помощью [Включить]. Кроме того, вам нужно включить таблицу в ваш запрос. У Тима Хойера есть пост в блоге о том, как это сделать:

http://timheuer.com/blog/archive/2010/01/05/master-details-with-ria-services-and-includedresults.aspx

...