Ради полноты я попробовал OrderBy (). ThenBy (), и все еще было дублированное соединение = (

римера в новой книге Entity Framework Джулии Лерман.) У меня есть база данных с двумя таблицами, Contact и Address. Таблица контактов имеет ContactID (int), а также имя, фамилию и т. Д. В таблице Address есть ContactID, а также город, штат, почтовый индекс и т. Д.

Вот простой запрос LINQ:

var addressGraphQuery = from a in context.Addresses.Include("Contact")
                        orderby a.Contact.LastName, a.Contact.FirstName
                        select a;

Из SQL Profiler я вижу следующее:

SELECT 
    [Extent1].[addressID] AS [addressID], 
    [Extent1].[City] AS [City], 
    [Extent1].[StateProvince] AS [StateProvince], 
    -- etc
    [Extent3].[ContactID] AS [ContactID1], 
    [Extent3].[FirstName] AS [FirstName], 
    [Extent3].[LastName] AS [LastName], 
    -- etc
FROM   [dbo].[Address] AS [Extent1]
INNER JOIN [dbo].[Contact] AS [Extent2] ON [Extent1].[ContactID] = [Extent2].[ContactID]
LEFT OUTER JOIN [dbo].[Contact] AS [Extent3] ON [Extent1].[ContactID] = [Extent3].[ContactID]
ORDER BY [Extent2].[LastName] ASC, [Extent3].[FirstName] ASC

Он присоединяется к таблице контактов дважды! Зачем? Есть ли простой способ предотвратить это?

Тайна углубляется. Соединения исчезают, когда я убираю заказы. Соединения не исчезают при установкеcontext.ContextOptions.LazyLoadingEnabled = false.

Здесь также есть похожий вопрос:

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

Я посмотрю, есть ли Высшая сила, которую я могу спросить ...

Ответы на вопрос(0)

Ваш ответ на вопрос