Data binding 在silverlight 4的ria服务中将父数据和子数据绑定到DataGrid中

Data binding 在silverlight 4的ria服务中将父数据和子数据绑定到DataGrid中,data-binding,silverlight-4.0,service,ria,Data Binding,Silverlight 4.0,Service,Ria,我已经开始学习Silverlight 4 RIA服务。我已经看过很多关于如何将数据绑定到网格的示例。但被绑定的对象总是一个没有子表的简单对象 在我的数据库中,有一个员工表和一个id字段为pk的城市名称表。在employee表中,CityId字段有一个FK 我尝试做的第一件事是显示员工名单和他们所在城市的名字。 我已经按照所有教程创建edmx、创建域服务和使用datasource窗口创建datagrid中所示的正常方式完成了这项工作 当我尝试在员工父实体和citytypes子实体之间绑定城市名称时

我已经开始学习Silverlight 4 RIA服务。我已经看过很多关于如何将数据绑定到网格的示例。但被绑定的对象总是一个没有子表的简单对象

在我的数据库中,有一个员工表和一个id字段为pk的城市名称表。在employee表中,CityId字段有一个FK

我尝试做的第一件事是显示员工名单和他们所在城市的名字。 我已经按照所有教程创建edmx、创建域服务和使用datasource窗口创建datagrid中所示的正常方式完成了这项工作

当我尝试在员工父实体和citytypes子实体之间绑定城市名称时,问题就开始了

这条线很好用:

该行不:

在阅读了更多内容后,我意识到域服务不仅传递LINQ命令选择的实体的数据,而且不传递子实体信息。 除非使用include属性

所以我的问题是,是否有一种模式可以在构建silverlight应用程序时不签署所包含的实体之间的所有关联

谢谢,
Oren

要在绑定员工记录时提供城市信息,您需要确保在RIA域服务元数据中使用[Include]属性标记城市引用

  [MetadataTypeAttribute(typeof(MyTestObject.MyTestObject_Metadata))]
  public partial class MyTestObject
  {

    internal sealed class MyTestObject_Metadata
    {
      // Metadata classes are not meant to be instantiated.
      private MyTestObject_Metadata()
      { }

      [Include]
      public AnotherObject Foo { get; set; }
    }
}
您还需要在查询中包含引用

var results = this.ObjectContext.MyTestObject.Include(Foo);
希望这有帮助