有没有办法指示LINQ运行全文索引查询(例如CONTAINS)? LINQ目前为我构建的任何文本搜索查询都只能以LIKE运算符结束。我是否需要为此创建存储过程?
一个例子太棒了!谢谢!
答案 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)
您可以使用表值函数来执行此操作,我将在此博客文章中详细介绍