11 votes

Comment effectuer une recherche de texte intégral (FTS) avec Linq sur l'Entity Framework ADO.NET ?

Maintenant que SQL Server 2008 intègre la recherche en texte intégral, je souhaite l'utiliser pour alimenter la recherche de mon site web. Je compte également utiliser le framework ADO.NET Entity pour mon ORM, mais je me demandais comment faire une recherche en texte intégral (FTS) avec Linq et ADO.NET Entity Framework ?

Est-ce qu'il existe un support dans ADO.NET Entity Framework ou suis-je obligé d'utiliser la méthode de création d'une fonction qui utilise les prédicats de recherche en texte intégral ?

12voto

Marc Gravell Points 482669

Entity Framework prend en charge uniquement un sous-ensemble des fonctionnalités SQL disponibles (en partie pour rester compatible avec une gamme de fournisseurs). Cependant, même LINQ-to-SQL (qui prend en charge beaucoup plus de constructions spécifiques à SQL Server, telles que les UDF) ne prend pas en charge le texte intégral à ma connaissance.

Je pense que vous devez utiliser une procédure stockée / udf. L'approche UDF est préférée, car la couche de métadonnées est beaucoup plus solide et elle est composable au niveau du serveur de base de données - cependant, Entity Framework n'aime pas (ou n'a pas aimé, la dernière fois que j'ai vérifié) les UDF ;-p Donc vous devrez peut-être utiliser une procédure stockée.

10voto

Drew Noakes Points 69288

J'ai vu du code comme celui-ci pour EF4:

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

Cela peut être plus simple que de créer une procédure stockée ou une UDP dans certains cas.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X