【问题标题】:Binding parent and child data into DataGrid in ria services for silverlight 4在 Silverlight 4 的 ria 服务中将父数据和子数据绑定到 DataGrid
【发布时间】:2010-09-26 20:29:31
【问题描述】:

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

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

我尝试做的第一件事是显示员工列表及其城市名称。 我已经按照所有教程中显示的正常方式完成了这项工作(创建 edmx、创建域服务并使用数据源窗口创建数据网格)

当我尝试绑定城市名称时开始出现问题,在员工(父实体)和城市类型(子实体)之间抛出 FK

这条线运行良好:

<sdk:DataGridTextColumn x:Name="cityCodeColumn" Binding="{Binding Path=CityCode}" Header="CityCode" Width="SizeToHeader" />

这行没有:

<sdk:DataGridTextColumn x:Name="cityNameColumn" Binding="{Binding Path=CityType.Name}" Header="CityName" Width="SizeToHeader" />

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

所以我的问题是,是否存在构建 Silverlight 应用程序而不签署所有实体之间的关联的模式?

谢谢, 奥伦

【问题讨论】:

    标签: data-binding silverlight-4.0 service ria


    【解决方案1】:

    要在绑定 Employee 记录时使用 City 信息,您需要确保在 RIA 域服务元数据中使用 [Include] 属性标记 City 引用。

      [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);
    

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多