2010-05-26 9 views
15

Ich habe eine Produkteinheit, die 0 oder 1 "BestSeller" Entitäten hat. Aus irgendeinem Grund, wenn ich sage:Zu viele externe Verbindungen in Entity Framework 4?

db.Products.OrderBy(p => p.BestSeller.rating).ToList(); 

die SQL ich habe eine "extra" äußere Verbindung (unten). Und wenn ich ein zweites 0 oder 1 Relation-Schiff hinzufüge und von beiden bestelle, dann bekomme ich Outer Joins. Es sieht so aus, als ob jede solche Entität 2 äußere Joins statt einer einzigen erzeugt. LINQ to SQL verhält sich genau so, wie Sie es erwarten würden, ohne zusätzlichen Join.

Hat jemand anderes dies erfahren, oder wissen, wie man es repariert?

SELECT 
[Extent1].[id] AS [id], 
[Extent1].[ProductName] AS [ProductName] 
FROM [dbo].[Products] AS [Extent1] 
LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent2] ON [Extent1].[id] = [Extent2].[id] 
LEFT OUTER JOIN [dbo].[BestSeller] AS [Extent3] ON [Extent2].[id] = [Extent3].[id] 
ORDER BY [Extent3].[rating] ASC 
+0

Es scheint, als ob es dies nur für eine 0..1 Unternehmen der Fall ist. Wenn eine Auflistung von Entitäten vorhanden ist, führt das mühsame Laden der Auflistung zum richtigen einzelnen äußeren Join. –

Antwort

2

Diese zusätzliche äußere Verbindung scheint ziemlich überflüssig zu sein. Ich denke, es ist am besten, sich an das Designteam des Entity-Frameworks zu wenden. Sie wissen vielleicht, ob es sich um einen Fehler handelt und ob etwas in einer nächsten Version behoben werden muss. Sie können sie unter http://blogs.msdn.com/b/efdesign/contact.aspx kontaktieren

+2

Guter Anruf - nur das getan. –

+1

+1 für die Zeit nehmen, um die Software besser zu machen! – JohnB

+0

Nur neugierig, ob Sie vom EF-Team zurück gehört haben? Ich sehe das gleiche und bin neugierig, ob das ein Fehler oder ein "Feature" ist. Dachte ich würde hier fragen bevor ich das Team kontaktiere. –

1

Es kann ein Fehler sein, aber es scheint so ein einfaches Beispiel, dass es seltsam ist, dass der Fehler nicht abgefangen und behoben wurde.

Können Sie Ihr EF-Modell überprüfen.

Wurde die BestSeller-Tabelle zweimal hinzugefügt, oder gibt es eine Duplizierung in der Beziehung zwischen den Tabellen?

+0

Überprüfen Sie auch die SSDL und stellen Sie sicher, dass die Tabelle korrekt zugeordnet ist. –

+0

Ich überprüfte das XML des Entitätsmodells, und ich sah nichts, was mich heraussprang. Hoffentlich können die Leute im EF Blog einen Einblick geben. –

+0

Verfluchen Sie das Include .. EF-Team muss dies im großen Stil optimieren! –

Verwandte Themen