Warum generiert EF diese sql beim Abfragen der Referenzeigenschaft?

8

Wenn Sie die AdventureWorks-Datenbank verwenden und diese Abfrage ausgeben:

%Vor%

Wird in dieses sql übersetzt, welches das Beste ist:

%Vor%

Wenn ich jedoch diese Abfrage ausstelle:

%Vor%

Ich bekomme dieses SQL:

%Vor%

Warum bekomme ich einen inneren und äußeren Join und teilt EF den Where über beide?

Of Note mit contains erstellt das gleiche SQL:

%Vor%

BEARBEITEN: Es scheint also ein EF-Fehler zu sein, ich habe die Antwort akzeptiert, die eine Arbeit lieferte

BEARBEITEN: Das geöffnete Verbindungsproblem wurde gefunden hier

    
BennyM 28.01.2011, 14:26
quelle

2 Antworten

1

Schreiben Sie eine Stored Procedure, die einen TVP als Eingabeparameter akzeptiert und dass EF die Ergebnisse aus dem SP materialisiert:)

    
Tim Mahy 29.01.2011, 16:58
quelle
0

Sieht wie ein Fehler in EF aus.

Ich denke, dass die Probleme damit zusammenhängen, dass Sie ein Feld in einer Untertabelle überprüfen. EF sieht nicht, dass alle OR-Klauseln auf dieselbe Tabelle und dasselbe Feld in dieser Tabelle verweisen. Daher erstellt es diesen komplizierten Join.

Versuchen Sie es neu zu schreiben, um CONTAINS anstelle von OR zu verwenden.

Verwendung von contains () in LINQ to SQL

    
Shiraz Bhaiji 28.01.2011 14:59
quelle