Was ist eine effiziente Entity Framework-Abfrage, um zu überprüfen, ob Benutzer Freunde sind?

8

Es gibt eine Tabelle mit dem Namen UserFriends , die Datensätze für Freundschaften von Benutzern enthält. Für jede Freundschaft gibt es nur einen Datensatz,

%Vor%

was hinsichtlich der Geschäftslogik gleich ist

%Vor%

aber beide können nicht für ein Paar vorkommen.

Was ist das effizienteste (noch lesbar und ohne Einbeziehung von SQL) Entity Framework Abfrage, um festzustellen, ob Benutzer A ein Freund von Benutzer B ist, in Anbetracht der Tatsache, dass wir nicht wissen, welche von ihnen in der ersten oder zweiten Spalte ist?

Mein Versuch ist klar und offensichtlich:

%Vor%

Gibt es hier einen besseren Weg als || ?

    
Dan Abramov 07.06.2011, 07:51
quelle

1 Antwort

6

Ich denke, wenn die Spalten User1ID und User2ID beide Primärschlüsselspalten sind, verursacht diese Abfrage eine Indexsuche und ist so effizient. Die Optimierung einer Abfrage, wenn sie kritisch ist, ohne den Ausführungsplan zu analysieren, ist ineffizient. Für wichtige Fragen schlage ich vor, dass Sie SQL Server (oder ein beliebiges DBMS) zum Schreiben und Analysieren Ihrer Abfragen verwenden und diese Abfragen dann in LINQ-Abfragen konvertieren. Es ist nicht schwer.

    
Arian 07.06.2011, 12:53
quelle