Я работаю над приложением silverlight, которое генерирует различные графики. Это требует небольшого количества хрустов, а также получения приличного количества данных из базы данных.Замедленное перечисление linq
Для моих сообщений db я создал веб-службу, которая использует Linq2SQL. Чтобы преодолеть проблему срыва моего веб-сервиса, я собираю данные, из-за которых иногда возникают 3 вызова веб-сервисов, чтобы получить все это.
О проблеме. При получении больших объемов данных процесс перечисления «ToList()» занимает несколько секунд, что составляет дольше желаемого времени загрузки. Типичная продолжительность моего запроса - около 1500 в соответствии с SQL Profiler. Вызов ToList() может занять до 4 секунд для 1000 записей, что кажется экстремальным.
Мой главный вопрос: есть ли что-нибудь, что можно сделать, чтобы ускорить этот процесс? Или, может быть, есть лучший способ получить большие объемы данных из db в приложение silverlight?
Дополнительная информация:
Моя ссылка LINQ закодирована в частичном классе моего контекста данных. Это связано с неудобной хранимой процедурой, тип возврата которой не будет хорошо работать с файлом dbml.
Я также создал основной объект, который я поставил в качестве возвращаемого типа для моего объекта, состоящий в основном из быстрых определений свойств, такие как:
public Guid Id {get; set;}
Следования до Спрашивается, при определении LinQ хранимой процедуры вызова и возвращаемые типы, есть ли какие-либо атрибуты, которые помогают ускорить процесс или я просто привяжу его к очень базовому объекту?
Когда вы говорите: «перечисление может занять до 4 секунд», что именно вы имеете в виду? Здесь у вас много областей, которые могут быть узкими местами. Ради здравомыслия, я предлагаю вам разделить их полностью, чтобы мы знали, что происходит. –
Извините, если я был немного многословным. То, что я имею в виду, сразу после вызова моей хранимой процедуры, мой вызов ToList() может занять несколько секунд, что кажется немного. –
Бадди, сколько объектов создается за это время? Когда вы вызываете ToList(), вы создаете десятки объектов или тысячи? –