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
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.
Tags und Links sql entity-framework entity-framework-4