使用 EF 4 和 RIA 服务连接两个表并返回整个结果
我正在使用 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 之间存在引用完整性。有人可以指出我正确的方向吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
为了优化性能,默认情况下查询中不包含相关表。您需要使用 [Include] 标记要包含在查询中的表。此外,您需要在查询中包含该表。 Tim Heuer 阅读了一篇有关如何执行此操作的博文:
http://timheuer.com/blog/archive/2010/01/05/master-details-with-ria-services-and-includedresults.aspx
To optimice performance related tables are not included by default in a query. You need to mark the tables that you wish to include in your query with [Include]. Furthermore you need to include the table in your query. Tim Heuer have reading a blogpost about how to do it:
http://timheuer.com/blog/archive/2010/01/05/master-details-with-ria-services-and-includedresults.aspx
如果您希望包含建筑物,则需要在代码中使用
.Include("Building")
:If you want the buildings to be included, you need to use the
.Include("Building")
to your code:根据您的要求,您可能需要考虑返回“表示模型”对象的集合(每个对象都包含有关房间和建筑物的信息),而不是实体。您在服务器项目中定义一个类,并使用域操作中实体模型中的数据(传递到客户端)填充该类型的对象集合。有关执行此操作的更多信息如下:http://msdn。 microsoft.com/en-us/library/ee707347(VS.91).aspx。
Depending upon your requirements, you might want to consider returning a collection of "presentation model" objects (with each object containing information about both the room and the building), rather than entities. You define a class in the server project, and populate a collection of objects of this type with the data from the entity model in a domain operation (which is passed to the client). More information on doing so is here: http://msdn.microsoft.com/en-us/library/ee707347(VS.91).aspx.