11

現在SQL Server 2008已經內置了全文搜索功能。我正在使用它來支持我的網站搜索。我也在爲我的ORM使用ADO.NET實體框架,但我想知道如何使用Linq將全文搜索(FTS)轉換爲ADO.NET實體框架?如何用Linq實現全文搜索(FTS)到ADO.NET實體框架?

在ADO.NET實體框架中是否有任何支持,或者我堅持使用method of creating a function which uses the full text search predicates

+0

您使用的是EF 4還是更早? – 2011-05-20 14:55:25

回答

12

實體框架僅支持可用的sql功能的一個子集(部分爲了在一系列提供程序中保持兼容)。但是,即使LINQ到SQL(它支持更多的SQL-Server特定結構,如UDF)也不支持全文AFAIK。

我相信你需要使用存儲過程/ udf。 UDF方法是首選,因爲元數據層更強大,它可以在數據庫服務器組合 - 但是,實體框架沒有(或沒有,上次我檢查)像UDFs ;-p所以你可能有使用存儲過程。

+0

在上面的答案中,這可能也有幫助:http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql- expressions.aspx – 2009-09-28 06:00:53

+0

@Marc,你記得UDF方法所帶來的所有這些年後的任何機會嗎? (其實,沒關係,我在使用CONTAINSTABLE時看到一些例子) – 2012-03-24 23:29:15

10

我見過這樣的代碼EF4:

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

這可能是比創建在某些情況下,存儲過程或UDP簡單。