你如何使用Linq到ADO.NETentity framework进行全文搜索(FTS)?

现在SQL Server 2008内置了全文搜索。我希望用它来支持我网站的搜索。 我也在考虑为我的ORM使用ADO.NETentity framework,但我想知道如何使用Linq到ADO.NETentity framework进行全文搜索(FTS)?

在ADO.NETentity framework中是否有任何支持,或者我是否坚持使用创建使用全文搜索谓词的函数的方法 ?

entity framework仅支持可用的sqlfunction的一部分(部分是为了在一系列提供者上保持兼容)。 但是,即使LINQ-to-SQL(支持更多SQL-Server特定的结构,如UDF)也不支持全文AFAIK。

我相信你需要使用存储过程/ udf。 UDF方法是首选,因为元数据层更强大,并且它可以在数据库服务器上组合 – 但是,entity framework不像(或者上次我检查过的那样)像UDF一样;-p所以你可能有使用存储过程。

我见过EF4这样的代码:

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

这可能比在某些情况下创建存储过程或UDP更简单。