Служба данных WCF: проблема производительности при извлечении вложенных объектов - PullRequest
0 голосов
/ 05 марта 2012

Моя схема базы данных:

table : Terminology (ID (PK), Name, Comments)
table : Content (ID (PK), TerminologyID (FK), Data, LangaugeID)

1 - множество взаимосвязей между терминологией и контентом.Одна терминология может иметь любое количество контента на основе идентификатора другого языка.

Таблица терминологии и содержания может содержать миллионы записей.

Теперь даже можно подумать, что я получаю несколько сотен записей (нумерацию страниц) измоя клиентская сторона использует службу данных WCF, после 5-6 попыток я получаю исключение тайм-аута.

_DataService.Terminologies.Expand("Contents").Skip(index1).Take(count).ToList();

Если я не разверну содержимое, запрос будет работать нормально :), но у меня не будет данных содержимого.Как лучше всего справиться с этим сценарием.

Параметры ...

  1. Есть ли какое-либо улучшение производительности, если я использую параметр "Включить в ServerSide" (я имею в виду написание пользовательского метода веб-виджетов)?over Exapnd на клиентской стороне.
  2. Создание представлений базы данных и доступ к ним через клиентскую сторону.
  3. Создание хранимой процедуры, где я могу передать предпочитаемый LanguageID и вызвать его со стороны клиента.

1 Ответ

0 голосов
/ 05 марта 2012

Является ли этот ADO.NET DataServices созданным по умолчанию мастером?

В любом случае, если ваш клиент может получить доступ к базе данных напрямую, это будет намного быстрее, поэтому, если доступна опция прямой базы данных, воспользуйтесь ею.

Если WCF является единственным вариантом, вам придется создать собственную реализацию веб-службы подкачки, возможно, даже с процедурой хранилища, которая возвращает несколько наборов записей.

Кстати, я не вижу LanguageId в вашем сервисном запросе, и это может сильно замедлить работу.

_DataService.Terminologies.Expand("Contents").Skip(index1).Take(count).ToList();
...