你如何使用Linq到ADO.NET實體框架進行全文搜索(FTS)?

c# entity-framework full-text-search linq-to-entities sql-server-2008

現在SQL Server 2008內置了全文搜索。我希望用它來支持我網站的搜索。我也在考慮為我的ORM使用ADO.NET實體框架,但我想知道如何使用Linq到ADO.NET實體框架進行全文搜索(FTS)?

在ADO.NET實體框架中是否有任何支持,或者我是否堅持使用創建使用全文搜索謂詞的函數方法

一般承認的答案

實體框架僅支持可用的sql功能的一部分(部分是為了在一系列提供者上保持兼容)。但是,即使LINQ-to-SQL(支持更多SQL-Server特定的結構,如UDF)也不支持全文AFAIK。

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


熱門答案

我見過EF4這樣的代碼:

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

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



Related

許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因
許可下: CC-BY-SA with attribution
不隸屬於 Stack Overflow
這個KB合法嗎? 是的,了解原因