Я создал представление в базе данных, которое дает мне представление об организационной структуре в этот момент во времени. Действительно, я использую getdate () в этом представлении. Я импортировал представление в моем edmx и написал запросы на основе этого представления. Большинство запросов объединяют таблицу с представлением и возвращают DTO. Эти запросы работают нормально и быстро (200 мс), когда я их профилирую в профилировщике SQL.
Когда я делаю группу по объединенной таблице и просматриваю, тогда продолжительность намного больше. Как ни странно, когда я выполняю запрос LinQ, длительность очень велика, но когда я сам выполняю сгенерированный запрос в SQL Server Management Studio, он действительно быстрый. Я удостоверился, что это не было вызвано кэшированием или планами выполнения, которые уже были рассчитаны. Запрос LinQ также дает мне много операций чтения и записи, в то время как запрос через SQL Mgmt Studio не дает мне записи и намного меньше операций чтения.
У нас есть предположение, что представление необходимо пересчитывать, когда запрос выполняется через LinQ, а не когда он выполняется через SQL Mgmt Studio.
Другой подход, который я пробовал, - создать хранимую процедуру в базе данных. Этот сохраненный процесс выполняет точно такой же запрос, который сгенерировал LinQ. Я сопоставил этот сохраненный процесс в EDMX. Когда я снова вызываю сохраненный процесс через LinQ, длительность очень велика (7000 мс) и много операций чтения и записи. Когда я выполняю его через SQL Mgmt Studio, длительность будет такой, как ожидалось (200 мс), и мало чтения и без записи.
Есть предложения?
Спасибо