В следующем примере мы вставляем объект, называемый taskinstance, в наш контекст. у нас есть внешний ключ FK_Contract, что мы устанавливаем на 2.Trace Entity Framework 4.0: дополнительные запросы для внешних ключей
entity.FK_Contract = 2;
context.TaskInstances.AddObject(entity);
Запрос порожден рамкой сущности является простой вставкой. (все в порядке)
Однако следующий запрос работает по-другому.
int contractId = context.Contracts.Where((T) => T.Name == contractName).Single().Id;
entity.FK_Contract = contractId;
context.TaskInstances.AddObject(entity);
В следе созданных рамок сущности, мы видим, без удивления запроса выбора Id в соответствии с contractName, но мы также видим дополнительный запрос выглядит как:
select id,... from [TaskInstances] WHERE [Extent1].[FK_Task] = @contractId
Этого дополнительного запрос приводит ко многим проблемам , особенно когда мы работаем с зарубежным столом с миллионами записей. Сеть идет вниз!
Поэтому мы бы хотели Выяснить назначения этого дополнительного запроса и способ, чтобы сделать его исчезнуть.
Спасибо, Ричард, ваш ответ исправил мою проблему! :) – Julien