SQL Server:通过LINQ访问全文索引

时间:2009-07-23 17:55:57

标签: sql-server linq

有没有办法指示LINQ运行全文索引查询(例如CONTAINS)? LINQ目前为我构建的任何文本搜索查询都只能以LIKE运算符结束。我是否需要为此创建存储过程?

一个例子太棒了!谢谢!

3 个答案:

答案 0 :(得分:0)

由于LINQ是通用查询抽象层,因此无法通过LINQ直接执行特定于服务器的实现。您可以使用商店模型中的视图使用EF执行此操作。

话虽如此,您可以使用context.ExecuteQuery(string)通过LINQ to SQL执行此操作。请记住,如果使用ExecuteQuery,请确保将变量作为参数传递而不是简单的字符串连接,因为查询会直接传递给服务器,因此如果处理不当,可能会导致SQL注入。这是一个避免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)

答案 1 :(得分:0)

我还建议查看Lucene和Linq到Lucene的实现。根据我的经验,它提供了比搜索SQL全文索引(特别是在SQL 2008中)更好的性能。

答案 2 :(得分:0)

您可以使用表值函数来执行此操作,我将在此博客文章中详细介绍

http://sqlblogcasts.com/blogs/simons/archive/2008/12/18/LINQ-to-SQL---Enabling-Fulltext-searching.aspx