1

我正在使用SL4 & .Net Ria服务。我的数据模型有一个名为DeviceAndStates的属性为0 .. *的设备,通过这个<riacontrol/>我得到了一个特定类型的所有设备和他的DevicesAndStates。LoadedData在Ria服务中积累了相关对象的结果

<riaControls:DomainDataSource Name="deviceDomainDataSource" QueryName="getDevicesWithOpenStateQuery" .../> 

在客户端显示设备及其DevicesAndStates的两个嵌套列表框。

<ListBox ItemsSource="{Binding ElementName=deviceDomainDataSource, Path=Data}"> 
     <ListBox x:Name="SubRowListBox" ItemsSource="{Binding DevicesAndStates}"> 
     </ListBox> 
</ListBox 

的问题是,在服务器端,查询返回的所有设备进行(仅限于特定类型的)的特定类型的DeviceAndStates但在客户端没有。在这里,在客户端

private void deviceDomainDataSource_LoadedData(object sender, LoadedDataEventArgs e) 
    { 

     if (e.HasError) 
     { 
      System.Windows.MessageBox.Show(e.Error.ToString(), "Load Error", System.Windows.MessageBoxButton.OK); 
      e.MarkErrorAsHandled(); 
     } 
     else 
     { 

     } 
    } 

在e.Entities我得到正确的,但看着他DeviceAndState财产的所有设备,它包含了特定类型的查询的所有devicesAndStates(和我已经获得所有以前的类型先前的查询)。因此,Device的DeviceAndState的Listbox会将查询的结果累积到下一个。

回答

0

您可以通过LoadOperation的AllEntities成员获取新加载的引用实体。使用一些LINQ,您可以将其过滤为只与涉及顶级设备相关的实体。