Доступ к информации из CommonPart происходит очень медленно.C#

Место общения программистов C#
Anonymous
Доступ к информации из CommonPart происходит очень медленно.

Сообщение Anonymous »

Я новичок в Orchard, и это, должно быть, связано с тем, как хранятся базовые данные.
Соединение с CommonPart кажется достаточно быстрым, например: п>
var items = _contentManager.Query("someTypeName")
.ForVersion(VersionOptions.Published)
.Join().List().ToList();

Это работает довольно быстро. Но всякий раз, когда я пытаюсь получить доступ к какому-либо полю в CommonPart, оно работает очень медленно, вот так:
var items = _contentManager.Query("someTypeName")
.ForVersion(VersionOptions.Published)
.Join().List()
//access some field from commonpart
.Select(e => new {
User = e.As().Owner.UserName
}).ToList();

Общее количество данных составляет около 1200 элементов, а необходимое время — около 5 секунд, это не может быть так медленно. Для простого запроса SQL, выполняемого в фоновом режиме, это должно занять около 0,5 секунды или даже меньше.
Я пытался изучить исходный код Orchard, но не нашел ничего, что могло бы быть причиной проблема. Кажется, что все попадает в черный ящик в точке доступа IContent.
Обновление
Я попробовал немного отладить и увидел что следующий метод используется внутри DefaultContentManager:
ContentItem New(string contentType) { ... }

Ну, это действительно интересно, запрос просто запрашивает данные, ничего не изменяя, не вставляя и не обновляя. Но обращение к методу показывает, что здесь что-то не так.
Обновить
С помощью комментария @Bertrand Le Roy я попробовал следующие коды с QueryHint но похоже, что это ничего не меняет:
var items = _contentManager.Query("someTypeName")
.ForVersion(VersionOptions.Published)
.Join()
.WithQueryHints(new QueryHints().ExpandParts())
.List()
//access some field from commonpart
.Select(e => new {
User = e.As().Owner.UserName
}).ToList();

и это (без .Join)
var items = _contentManager.Query("someTypeName")
.ForVersion(VersionOptions.Published)
.WithQueryHints(new QueryHints().ExpandParts())
.List()
//access some field from commonpart
.Select(e => new {
User = e.As().Owner.UserName
}).ToList();


Подробнее здесь: https://stackoverflow.com/questions/555 ... emely-slow

Вернуться в «C#»