我正在使用的项目基于标准的“Silverlight 业务应用程序”。
我有许多可以正常显示的表,但我希望显示一个基于来自其他表的 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>
并在 DataGrid 中显示结果:
<sdk:DataGrid IsReadOnly="True" Name="translatedStringsDataGrid" ItemsSource="{Binding Data, ElementName=joinClass}">
没什么火箭科学 - 问题是我只能在 DataGrid 中显示一条记录。查询 GetJoinClass() 似乎执行良好并返回近 600 条记录,但只有一条出现在 DataGrid 中。我使用的所有其他标准查询都没有这个问题。
任何指点都感激不尽!