Слишком много левых внешних соединений в Entity Framework 4?

У меня есть объект продукта, который имеет 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

Ответы

Ответ 2

Это дополнительное внешнее соединение кажется довольно излишним. Я думаю, что лучше всего обратиться к команде разработчиков инфраструктуры сущностей. Они могут знать, если это ошибка и посмотреть, если это что-то, что необходимо решить в следующей версии. Вы можете связаться с ними по адресу http://blogs.msdn.com/b/efdesign/contact.aspx

Ответ 3

Это может быть ошибка, но, похоже, такой простой пример, что странно, что ошибка не была обнаружена и исправлена.

Не могли бы вы проверить свою модель EF.

Была ли добавлена ​​таблица BestSeller дважды, или существует дублирование в отношении между таблицами.