2009-07-23 7 views
1

est-il possible d'indiquer à LINQ d'exécuter une requête d'index Fulltext (telle que CONTAINS)? Toutes les requêtes de recherche de texte que LINQ est en train de créer pour moi ne se terminent qu'avec l'opérateur LIKE. Ai-je besoin de créer une procédure stockée pour cela?SQL Server: Accéder à l'index Fulltext via LINQ

Un exemple serait fantastique! Je vous remercie!

+0

Dupe: http://stackoverflow.com/questions/224475/is-it- possible-d'utiliser-full-text-search-fts-avec-linq –

Répondre

0

Étant donné que LINQ est une couche d'abstraction de requête à usage général, vous ne pouvez pas exécuter directement des implémentations spécifiques au serveur via LINQ. Vous pouvez le faire avec EF en utilisant une vue dans le modèle de magasin. Cela étant dit, vous pouvez faire cela avec LINQ to SQL en utilisant context.ExecuteQuery (string). N'oubliez pas que si vous utilisez ExecuteQuery, assurez-vous de transmettre les variables en tant que parametres plutôt que de simples concaténations de chaînes, car votre requête est transmise directement au serveur et peut donc entraîner l'injection SQL si elle n'est pas correctement gérée. Voici un exemple évitant l'injection de SQL:

Dim searchName = "foo" 

Dim SQL As String = "Select ID, LastName, FirstName, WebSite, TimeStamp " & _ 
    "From dbo.Author " & _ 
    "Where Contains (LastName, {0})" 

Dim authors As IEnumerable(Of Author) = context.ExecuteQuery(Of Author)(SQL, searchName) 
0

Je suggérerais aussi de regarder Lucene et l'implémentation de Linq à Lucene. Dans mon expérience, il offre BEAUCOUP de meilleures performances que la recherche par rapport aux index de texte intégral SQL (en particulier dans SQL 2008).

Questions connexes