Я замечаю странное поведение.У меня есть таблицы торговцев и заказов, и я делаю два выбора один, за другим, выбор очень прост (выберите * у продавца, выберите * из заказа).
Вот трассировка sql profiler, когда я выбираю первых торговцев, затем заказы:
заметьте, что выбор заказов занимает колоссальные 75 секунд (то есть для ~ 80.000 записей, на действительно приличной машине 8 ГБ ОЗУ, ssd, i7).
Теперь, если я изменил последовательность и выбрал первые заказы, то торговцы:
время выполнения запроса заказа в профилировщике сократилось до 2,5 секунд, но в приложении оно примерно такое же, как в первом случае (я полагаю,потому что EF внутри пытается связать заказы с торговцами, так как между ними есть внешний ключ).
Итак, вопрос в том, почему профилировщик видит разное время и что EF делает во втором случае так долго, может быть, что-то настроено неправильно?
ОБНОВЛЕНИЕ : Я началлокализовать проблему с чистой моделью EF, и она работает нормально.Я использую шаблоны EF T4 для генерации классов контекста и сущностей, поэтому, возможно, они устарели и вызывают проблемы, дадут знать, если найдут что-то конкретное, - я думаю, что это как-то связано с коллекциями исправлений, поэтому похоже, что SQL profiler вводит в заблуждение- Я думаю, что запрос был выполнен нормально, просто он ожидал, что EF завершит чтение результатов или что-то в этом роде (я имею в виду, что EF делает что-то экспансивное при чтении результатов).
using (var myEntities = new myEntities())
{
var merchants = myEntities.Merchants.ToList();
var orders = myEntities.Orders.ToList();
}