Устройство передачи данных не работает в сервисах Silverlight 3 + RIA
-
05-07-2019 - |
Вопрос
У меня есть приложение Silverlight 3 со службами RIA, и я столкнулся с проблемой, когда мой DataPager загружает данные только для начального размера загрузки, а затем больше не перезагружается.Он выводит две страницы данных (pageSize= 10, LoadSize= 20).) Он корректно отображает 119 страниц данных, но когда я перехожу на страницу 3, в моей datagrid и dataforms ничего не появляется.
Это Источник данных моего Домена:
<riaControls:DomainDataSource x:Name="_dds" QueryName="GetCaseLoads" AutoLoad="True" PageSize="10" LoadSize="20">
<riaControls:DomainDataSource.DomainContext>
<domain:FooContext />
</riaControls:DomainDataSource.DomainContext>
</riaControls:DomainDataSource>
Вот фрагмент для DataPager:
<data:DataPager Source="{Binding Data, ElementName=_dds}" />
А вот запрос Доменной службы:
[RequiresAuthentication()]
public IQueryable<CaseLoad> GetCaseLoads()
{
// Return all case loads
return this.Context.CaseLoadSet;
}
Это довольно просто, поэтому я не уверен, чего не хватает.Будем признательны за любую помощь;
Решение
Потратив слишком много времени на попытки заставить это работать, я, НАКОНЕЦ, разобрался с проблемой, которая, как мне кажется, скорее связана с ошибкой в технологии RIA Services, потому что я должен был получить какое-то предупреждающее сообщение об этом.
Простое решение состоит в том, чтобы упорядочить коллекцию, возвращаемую GetCaseLoads().Я сделал это вот так, и это сработало:
[RequiresAuthentication()]
public IQueryable<CaseLoad> GetCaseLoads()
{
// Return all case loads
return this.Context.CaseLoadSet.OrderBy(caseLoad=>caseLoad.fkUserId);
}
Удивительно, сколько времени заняло решение этой маленькой проблемы.
Другие советы
У меня была та же проблема, я могу видеть из примера, приведенного в документации Обзора RIA Services, что они используют LINQ to SQL вместо LINQ to EF - должно быть что-то с различием между ними.
Спасибо за публикацию обходного решения, избавившего меня от многочасовых ошибок:)