2010-09-15 3 views
0

У меня есть обслуживание домена, производный от LinqToEntitiesDomainService <FOOEntities>LINQ для лиц службы домена

Он имеет один метод, IQueryable < Бар > GetBar(). GetBar возвращает запрос LINQ для модели сущности. LINQ отлично работает в LINQPad.

В XAML Silverlight thingy у меня есть 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 правильным свойством использовать, когда вы хотите предоставить элемент управления с источником элементов?

Есть ли какой-либо известный способ узнать, что происходит между сервисом и клиентом?

UPDATE

Служба возвращает 504 («ReadResponse() не удалось: Сервер не возвращает ответ на эту просьбу.») После того, как метод запроса успешно завершается.

UPDATE

504 произошло потому, что количество записей превысило 65535. Только 24 000 с лишним сделали это за пределами предложения where в LINQ (это будет 74 000 без предложения where), так что это даже не ограничение того, что может пройти через провод. Абсурд. Это число является микроскопическим.

Я думаю, что мы узнали, что Entity Framework еще не готова к использованию в программном обеспечении.

UPDATE

... или что вы должны использовать пейджеры, когда вы должны показать большое количество записей в XAML.

+0

Возможно, вам следует отправить исходный код в метод 'GetBar'. – Gabe

ответ

2

Вы можете использовать Fiddler, чтобы узнать, что происходит между клиентом и сервером. Это прокси-сервер браузера, который перехватывает весь трафик браузера, чтобы вы могли видеть, что происходит.

Я не знаю, что пошло не так, к сожалению.

+0

Спасибо! Большая помощь. –

Смежные вопросы