实体框架 - 为什么EF以1比1的关系使用LEFT OUTER JOIN?

Tay*_*ese 6 .net c# oracle entity-framework devart

为什么.NET Entity Framework生成的SQL使用子查询和左外连接的简单的1对1关系?我希望看到两个表上的简单连接.我正在使用Devart Dotconnect for Oracle.有任何想法吗?

以下是我看到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"
Run Code Online (Sandbox Code Playgroud)

小智 0

在数据库理论中,假设在一对一关系中,一侧的行必须在另一侧的相应行之前创建。如果您不使用外连接,那么您将永远无法列出不匹配的行。