Проект, который я использую, основан на стандартном «бизнес-приложении Silverlight».Пользовательская проблема DomainDataSource/Table view в службах 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>
и отображать результаты в DataGrid:
<sdk:DataGrid IsReadOnly="True" Name="translatedStringsDataGrid" ItemsSource="{Binding Data, ElementName=joinClass}">
ничто ракеты науки - проблема в том, что я могу получить только одну запись для отображения в DataGrid. Запрос GetJoinClass(), кажется, выполняет штраф и возвращает почти 600 записей, но только один из них появляется в DataGrid. Все остальные стандартные запросы, которые я использую, не имеют этой проблемы.
Любые указатели с благодарностью получили!
Когда данные покидают сервер, все данные (несмотря на свою иерархию) сглаживаются и сохраняются в «словаре», где индекс является значением свойства/свойств [Key]. Это уменьшает количество данных, которые должны быть отправлены по проводу, когда одна запись существует как ребенок для многих родителей. Два «разных» объекта с одним и тем же ключом рассматриваются как один неизменяемый объект, основанный на ключе. Добавляя атрибут '[Key]' к каждому из членов, которые делают запись уникальной, вам удалось определить, как две разные записи фактически разные. –
большое спасибо Ed! –