Ответ 1
Я попросил Джулию Лерман ответить на аналогичный вопрос:
См. Простой запрос Linq дублировал соединение с той же таблицей?
У меня есть объект продукта, который имеет 0 или 1 "BestSeller". Почему-то, когда я говорю:
db.Products.OrderBy(p => p.BestSeller.rating).ToList();
SQL, который я получаю, имеет "дополнительное" внешнее соединение (ниже). И если я добавлю второе 0 или 1 отношение корабля и закажу оба, то я получаю 4 внешних соединения. Кажется, что каждый такой объект производит 2 внешних объединения, а не один. LINQ to SQL ведет себя точно так, как вы ожидали, без дополнительного соединения.
Кто-нибудь еще испытал это или знает, как его исправить?
SELECT
[Extent1].[id] AS [id],
[Extent1].[ProductName] AS [ProductName]
FROM [dbo].[Products] AS [Extent1]
LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent2] ON [Extent1].[id] = [Extent2].[id]
LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent3] ON [Extent2].[id] = [Extent3].[id]
ORDER BY [Extent3].[rating] ASC
Я попросил Джулию Лерман ответить на аналогичный вопрос:
См. Простой запрос Linq дублировал соединение с той же таблицей?
Это дополнительное внешнее соединение кажется довольно излишним. Я думаю, что лучше всего обратиться к команде разработчиков инфраструктуры сущностей. Они могут знать, если это ошибка и посмотреть, если это что-то, что необходимо решить в следующей версии. Вы можете связаться с ними по адресу http://blogs.msdn.com/b/efdesign/contact.aspx
Это может быть ошибка, но, похоже, такой простой пример, что странно, что ошибка не была обнаружена и исправлена.
Не могли бы вы проверить свою модель EF.
Была ли добавлена таблица BestSeller дважды, или существует дублирование в отношении между таблицами.