Wie führt man eine Volltextsuche (FTS) mit Linq to ADO.NET Entity Framework durch?

c# entity-framework full-text-search linq-to-entities sql-server-2008

Frage

Nun, da SQL Server 2008 über eine Volltextsuche verfügt, möchte ich damit die Suche meiner Website unterstützen. Ich schaue mir auch die Verwendung des ADO.NET-Entity-Frameworks für mein ORM an, aber ich habe mich gefragt, wie Sie eine Volltextsuche (FTS) mit Linq to ADO.NET-Entity-Framework durchführen.

Gibt es Unterstützung im ADO.NET-Entity-Framework oder halte ich die Methode zum Erstellen einer Funktion fest, die die Prädikate für die Volltextsuche verwendet ?

Akzeptierte Antwort

Entity Framework unterstützt nur eine Teilmenge der verfügbaren SQL-Funktionen (die teilweise für eine Reihe von Anbietern kompatibel bleiben). Allerdings unterstützt auch LINQ-to-SQL (das viel mehr SQL-Server-spezifische Konstrukte wie UDFs unterstützt) kein Volltext-AFAIK.

Ich glaube, Sie müssen eine gespeicherte Prozedur / udf verwenden. Der UDF-Ansatz wird bevorzugt, da der Metadaten-Layer viel stärker ist und auf dem db-Server zusammengestellt werden kann. Entity Framework ist jedoch nicht (oder hat das letzte Mal nicht überprüft) wie UDFs ;-p eine gespeicherte Prozedur verwenden.


Beliebte Antwort

Ich habe Code wie folgt für EF4 gesehen:

var query = context.ExecuteStoreQuery<Person>(
        "SELECT * FROM People WHERE FREETEXT(*,{0})", 
        searchText
    ).AsQueryable();

Dies ist in manchen Fällen einfacher als das Erstellen eines gespeicherten Protokolls oder UDP.



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum