2010-03-17 4 views
6

Warum erstellt .NET Entity Framework SQL, das eine Unterabfrage und eine linke äußere Verknüpfung in einer einfachen 1: 1-Beziehung verwendet? Ich erwartete eine einfache Verbindung auf den beiden Tischen. Ich verwende . Irgendwelche Ideen?Entity Framework - Warum verwendet EF LEFT OUTER JOINs in einer 1: 1-Beziehung?

Unten ist der Ausgang Ich sehe mit freundlicher Genehmigung der 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

Sind Ihre Tabellen ordnungsgemäß fremdverschlüsselt? – overslacked

+0

Ja, es gibt einen Fremdschlüssel von MYTABLE1 bis MYTABLE2. –

+0

Kommt das von einer EF-Abfrage? Oder einfach eine Single()? – mxmissile

Antwort

0

In der Datenbanktheorie wird angenommen, dass in einer Beziehung eins-zu-eins, muss eine Reihe auf einer Seite vor dem entsprechenden erstellt werden Reihe auf der anderen Seite. Wenn Sie keinen äußeren Join verwenden, können Sie niemals die Zeilen auflisten, für die keine Übereinstimmung gefunden wurde.