2010-03-17 9 views
6

Perché .NET Entity Framework produce SQL che utilizza una subquery e un join esterno sinistro su una semplice relazione 1 a 1? Mi aspettavo di vedere un semplice join sui due tavoli. Sto usando Devart Dotconnect for Oracle. Qualche idea?Entity Framework: perché EF utilizza LEFT OUTER JOIN in una relazione 1 a 1?

Sotto è l'uscita vedo concessione EFTracingProvider:

SELECT 
1 AS C1, 
"Join1".USER_ID1 AS USER_ID, 
... 
FROM "MY$NAMESPACE".MYTABLE1 "Extent1" 
INNER JOIN (... 
    FROM "MY$NAMESPACE".MYTABLE2 "Extent2" 
    LEFT OUTER JOIN "MY$NAMESPACE".MYTABLE1 "Extent3" ON "Extent2".OTHER_ID = "Extent3".OTHER_ID) 
    "Join1" ON "Extent1".OTHER_ID = "Join1".OTHER_ID1 
WHERE "Extent1".USER_ID = :EntityKeyValue1 
-- EntityKeyValue1 (dbtype=String, size=6, direction=Input) = "000000" 
+0

Le tue tabelle sono correttamente digitate in modo estraneo? – overslacked

+0

Sì, c'è una chiave esterna da MYTABLE1 a MYTABLE2. –

+0

Si tratta di una query EF? O semplicemente un singolo()? – mxmissile

risposta

0

In teoria dei database, si presume che in una relazione uno-a-uno, Una fila su un lato deve essere creato prima della corrispondente fila dall'altra parte. Se non hai utilizzato un join esterno, non puoi mai elencare le righe che non avevano corrispondenza.

Problemi correlati