2010-03-17 6 views
6

Pourquoi .NET Entity Framework produit-il un SQL qui utilise une sous-requête et une jointure externe gauche sur une simple relation 1-à-1? Je m'attendais à voir une simple jointure sur les deux tables. J'utilise Devart Dotconnect for Oracle. Des idées?Entity Framework - Pourquoi EF utilise-t-il LEFT OUTER JOIN dans une relation 1-à-1?

Ci-dessous est la sortie que je vois avec la permission de la 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

Vos tables sont-elles correctement importées? – overslacked

+0

Oui, il existe une clé étrangère de MYTABLE1 à MYTABLE2. –

+0

Est-ce que cela provient d'une requête EF? Ou simplement un simple()? – mxmissile

Répondre

0

Dans la théorie de base de données, on suppose que dans une à une relation, une rangée d'un côté doit être créé avant le correspondant rangée de l'autre côté. Si vous n'avez pas utilisé de jointure externe, vous ne pouvez jamais lister les lignes qui ne correspondent pas.

Questions connexes