Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Entity Framework & Profiler 
V
    Опции темы
Ronin08
Дата 6.3.2012, 16:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



Доброго времени суток! 

Может подскажете как получается так, что когда выполняю запрос через EF
Код

var query = context.RqstLsts; //RqstLsts - вьюха в базе

то в профайлере запрос выполняется 19 секунд, а когда выполняю тот же запрос который получил профайлер на вход в SQL Enterprise  Manager он выполняется меньше минуты
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
Ronin08
Дата 7.3.2012, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



внесу уточнения.

В БД MS SQL есть вьюха RqstLst
Создаю модель Entity Framework на основе БД. В этой модели появляется сущность RqstLst

вот 2 примера выполнения одного и того же запроса

1 вариант
Код

public void MyMethod()
{
     context = new WaterMEntities();
     var query = context.RqstLst;
     dgRqstLst.ItemsSource = query;
}


2 вариант
Код

public void MyMethod()
{
    dgRqstLst.ItemsSource = this.GetRqstLst();
}

private IEnumerable<RqstLst> GetRqstLst()
{
        context = new WaterMEntities();
        string nativeSQLQuery = "SELECT  * " +
                                    "FROM dbo.RqstLst ";
        ObjectResult<RqstLst> requestes =
            context.ExecuteStoreQuery<RqstLst>(nativeSQLQuery);
        return requestes;
}

1 вариант выполняется 19сек, второй 1 сек. Смотрел через SQL Server Profiler/
Почему так?

Это сообщение отредактировал(а) Ronin08 - 7.3.2012, 18:54
--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
Ronin08
Дата 7.3.2012, 23:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 218
Регистрация: 16.2.2008
Где: г.Москва

Репутация: нет
Всего: 1



Проблема не в запросе в накладных расходах связанных с загрузкой объектов в контекст. 
собственно надо было установить свойство MergeOption в MergeOption.NoTracking
Код

context = new WaterMEntities();
context.RqstLst.MergeOption = MergeOption.NoTracking; // in System.Data.Objects
var query = context.RqstLst;
dgRqstLst.ItemsSource = query;


--------------------
Зачем вставать рано или поздно? Надо вставать вовремя
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
stab
mr.DUDA
Exception

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Базы данных под .NET | Следующая тема »


 




[ Время генерации скрипта: 0.0582 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.