2010-03-17 47 views
6

Tại sao .NET Entity Framework sản xuất SQL sử dụng truy vấn phụ và nối ngoài bên trái trên một mối quan hệ đơn giản 1-đến-1? Tôi hy vọng sẽ thấy một sự tham gia đơn giản trên hai bảng. Tôi đang sử dụng Devart Dotconnect for Oracle. Bất kỳ ý tưởng?Khung thực thể - Tại sao EF sử dụng LEFT OUTER JOIN trong mối quan hệ 1-đến-1?

Dưới đây là kết quả tôi thấy sự giúp đỡ của 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

Bàn của bạn có được khóa chính xác không? – overslacked

+0

Có, có khóa ngoại từ MYTABLE1 đến MYTABLE2. –

+0

Đây có phải là từ truy vấn EF không? Hoặc đơn giản là một đơn()? – mxmissile

Trả lời

0

Về lý thuyết cơ sở dữ liệu, người ta cho rằng trong một mối quan hệ một-một, Một hàng ở một bên phải được tạo ra trước khi tương ứng hàng ở phía bên kia. Nếu bạn không sử dụng kết nối bên ngoài, thì bạn không bao giờ có thể liệt kê các hàng không khớp.

Các vấn đề liên quan