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 ?
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.
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.