Когда я смотрю на SQL запрос, порожденного EF Я вижуEntity Framework, почему этот sql создается?
SELECT [extent1].ID as ID,
[extent1].Name as Name
From(
Select myview.ID as ID,
myview.Name as Name
From myview) AS [extent1]
Where([Extent1].ID = @p_linq_0)
Почему выбрать происходит внутри выбрать снаружи? У меня есть очень большая таблица, с которой я могу легко получить запись с внешним запросом, но весь запрос в совокупности сократился.
Мой Linq запрос
var result = from i in invitationEntity.Invitations
.Where(a=>a.id == inviationId)
select i;
Я использую SQL 2012 & EF5 & Linq.
Есть ли способ «заставить» более простой запрос?
Мне очень любопытно узнать, что вы найдете. Я не знаю, почему EF делает это, но я немного удивлен тем, что оптимизатор запросов не создает тот же план для обоих. Является ли вид sql, который у вас здесь, очень упрощенным? Я попытался запустить это на некоторых таблицах и представлениях самостоятельно, и я получаю тот же план выполнения для обоих запросов. – Sethcran
Вышеуказанное работает, если у вас есть <2 миллиона записей, но если у вас есть 29 миллионов, то оно подлежит таймаутам. Я упростил возвращаемые поля. Я начинаю думать, что это меньше EF и больше Linq для сущностей, которые являются виновниками. –
- этот код сначала, db first, model first? – Fredou