加入两个表并使用EF 4和RIA服务返回整个结果

时间:2011-01-23 13:24:00

标签: silverlight entity-framework-4 ria wcf-ria-services

我正在使用RIA服务和实体框架4.0构建Silverlight应用程序。我在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 个答案:

答案 0 :(得分:1)

为了优化,性能相关的表在查询中不会包含在默认情况下。您需要使用[Include]标记要包含在查询中的表格。此外,您需要在查询中包含该表。 Tim Heuer正在阅读一篇关于如何做到这一点的博文:

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

答案 1 :(得分:1)

如果您想要包含建筑物,则需要使用.Include("Building")代码:

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

答案 2 :(得分:1)

根据您的要求,您可能需要考虑返回“演示模型”对象的集合(每个对象包含有关房间建筑物的信息),而不是实体。您可以在服务器项目中定义一个类,并使用域操作(传递给客户端)中的实体模型中的数据填充此类对象的集合。有关这样做的更多信息,请访问:http://msdn.microsoft.com/en-us/library/ee707347(VS.91).aspx