У меня есть доменная служба, производная от LinqToEntitiesDomainService
У нее есть один метод, IQueryable GetBar ().GetBar возвращает запрос LINQ для модели объекта.LINQ отлично работает в LINQPad.
В XAML штук Silverlight у меня есть ListBox, у которого ItemsSource указывает на DomainDataSource, определенный в том же файле XAML, с именем dsGetBar.AutoLoad = "True" на dsGetBar.У меня есть пустой обработчик для события LoadedData dsGetBar.
Я запускаю это в VS2010.Когда я присоединяюсь к процессу WebDev.WebServer и к экземпляру браузера и загружаю страницу, я сталкиваюсь с точками останова в GetBar () и в обработчике LoadedData.Из этого я оптимистично заключаю, что сервис вызывается клиентом.
В GetBar () я вызываю queryresults.Count, который возвращает 24 000 и изменяется.Мой метод возвращает нормально, без каких-либо исключений.
Так вот в чем проблема:
В LoadedData dsGetBar.Data.Count == 0. В ListBox элементы не отображаются.В случае, если мой шаблон элемента ListBox был сломан, я попытался использовать DataGrid.Та же сделка
Есть ли данные там, где должны быть данные?Если нет, то где?Является ли ItemsSource правильным свойством, если вы хотите предоставить элементу управления источник элементов?
Есть ли какой-нибудь известный способ выяснить, что происходит между сервисом и клиентом?
ОБНОВЛЕНИЕ
Служба возвращает 504 («Ошибка ReadResponse (): сервер не возвратил ответ на этот запрос.») После успешного завершения метода запроса,
ОБНОВЛЕНИЕ
Произошло 504, потому что количество записей превысило 65 535.Только 24 000 с лишним прошли через предложение where в LINQ (это было бы 74 000 без предложения where), так что это даже не ограничение на то, что может проходить по проводам.Абсурд.Это число микроскопическое.
Я думаю, что мы узнали, что Entity Framework еще не готова для использования в программном обеспечении.
ОБНОВЛЕНИЕ
... или что вы должны использовать пейджеры, когда вам нужно отобразить большое количество записей в XAML.