2012-06-07 52 views
0

我正在使用的項目基於標準的「Silverlight業務應用程序」。RIA服務中的自定義域數據源/表視圖問題

我有很多表可以很好地顯示,但我期待顯示一個基於來自其他表的SQL連接的複合表。所以,在我Model.Designer.cs我有一個小的虛擬類:

 public class JoinClass 
    { 
     [Key] 
     public string LanguagesName { get; set; } 
     public string VersionsName { get; set; } 
     public string StringsName { get; set; } 
     public string TranslatedStringsValue { get; set; } 
    } 

然後,在我的DomainService.cs創建我的查詢:

 public IQueryable<JoinClass> GetJoinClass() 
    { 
     IQueryable<JoinClass> query = from o in this.ObjectContext.TranslatedStrings 
                    where o.LanguagesID == 10 
                    select new JoinClass { LanguagesName = o.Languages.LanguagesName, VersionsName = o.Strings.Versions.VersionsName, StringsName = o.Strings.StringsName, TranslatedStringsValue = o.TranslatedStringsValue }; 

     return query; 
    } 

在Silverlight應用程序訪問我這一切經由DomainDataSource:

  <riaControls:DomainDataSource Name="joinClass" LoadSize="20" QueryName="GetJoinClass" AutoLoad="True"> 
      <riaControls:DomainDataSource.DomainContext> 
       <ds:LanguageModelDomainContext /> 
      </riaControls:DomainDataSource.DomainContext> 
      <riaControls:DomainDataSource.SortDescriptors> 
       <riaControls:SortDescriptor PropertyPath="LanguagesName"></riaControls:SortDescriptor> 
      </riaControls:DomainDataSource.SortDescriptors> 
     </riaControls:DomainDataSource> 

,並顯示在數據網格中的結果:

<sdk:DataGrid IsReadOnly="True" Name="translatedStringsDataGrid" ItemsSource="{Binding Data, ElementName=joinClass}"> 

沒什麼火箭科學 - 問題是我只能得到一條記錄顯示在DataGrid中。查詢GetJoinClass()似乎執行得很好,並返回近600條記錄,但DataGrid中只有一條記錄出現。我使用的所有其他標準查詢都沒有這個問題。

任何指針感激地收到!

回答

0

答案 -

[Key]。該類的所有屬性都應具有[Key]屬性,而不僅僅是一個屬性。

 public class JoinClass 
    { 
     [Key] 
     public string LanguagesName { get; set; } 
     [Key] 
     public string VersionsName { get; set; } 
     [Key] 
     public string StringsName { get; set; } 
     [Key] 
     public string TranslatedStringsValue { get; set; } 
    } 

我不知道爲什麼。

+0

當數據離開服務器時,所有數據(儘管它的層次結構)都被壓扁並存儲在一個「字典」中,其中索引是'[Key]'屬性/屬性的值。當一條記錄作爲孩子存在於許多父母身上時,這就減少了必須通過網線發送的數據量。具有相同鍵的兩個「不同」對象被視爲基於該鍵的一個不可變對象。通過將'[Key]'屬性添加到使記錄獨一無二的每個成員,就成功地定義了兩個不同記錄實際上是不同的。 –

+0

非常感謝愛德! –