2012-02-10 5 views
1

У меня проблема с довольно сложным запросом, выполняемым через Entity Framework, который занимает так много времени, почти 50 секунд. Запрос выполняется с помощью специального вызова веб-службы, который создает новый ObjectContext, выполняет запрос и возвращает результат.Производительность запроса Entity Framework

Проблема в том, что если я прослежу с помощью SQL Server Profiler код T-SQL и попытаюсь выполнить его из SQL Server Management Studio, это займет 2 секунды ... что это может быть?

Спасибо, Marco

ответ

2

Для каждого ObjectContext, которая касается базы данных, Entity делает много работы запуска строит внутреннее представление схемы базы данных. Это может занять много времени (наш проект составляет около 30 секунд) и переносится за счет первого запроса, сделанного против базы данных. Последующие из них достаточно быстры, пока процесс не будет перезапущен. Это относится к вам?

+0

, но если я объявляю новую инфраструктуру объекта objectcontext, воссоздайте схему базы данных? потому что я не перезапускаю приложение – MaRuf

+0

«новый ObjectContext» не приведет к повторному созданию метаданных. Однако, если IIS убивает процесс или что-то каждый раз ... Вам необходимо разместить код, чтобы мы могли видеть, что происходит. Необходимо посмотреть, как вы выполняете запрос как на клиенте, так и на сервере. –

+0

Извините, я не могу отправить код, потому что он защищен, и мне не разрешено, но в основном клиент вызывает службу, которая создает новый класс в слое DAL, который инстанцирует контекст объекта и делает запрос. Объектный текст будет удален, но IIS не уничтожит этот процесс ... – MaRuf

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