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中只有一條記錄出現。我使用的所有其他標準查詢都沒有這個問題。
任何指針感激地收到!
當數據離開服務器時,所有數據(儘管它的層次結構)都被壓扁並存儲在一個「字典」中,其中索引是'[Key]'屬性/屬性的值。當一條記錄作爲孩子存在於許多父母身上時,這就減少了必須通過網線發送的數據量。具有相同鍵的兩個「不同」對象被視爲基於該鍵的一個不可變對象。通過將'[Key]'屬性添加到使記錄獨一無二的每個成員,就成功地定義了兩個不同記錄實際上是不同的。 –
非常感謝愛德! –