现在 SQL Server 2008 内置了全文搜索。我希望用它来支持我的网站搜索。我也在考虑为我的 ORM 使用 ADO.NET 实体框架,但我想知道如何使用 Linq 到 ADO.NET 实体框架进行全文搜索(FTS)?
ADO.NET 实体框架中是否有任何支持,或者我是否坚持使用创建使用全文搜索谓词的函数的方法?
现在 SQL Server 2008 内置了全文搜索。我希望用它来支持我的网站搜索。我也在考虑为我的 ORM 使用 ADO.NET 实体框架,但我想知道如何使用 Linq 到 ADO.NET 实体框架进行全文搜索(FTS)?
ADO.NET 实体框架中是否有任何支持,或者我是否坚持使用创建使用全文搜索谓词的函数的方法?
Entity Framework 仅支持可用的 sql 功能的一个子集(部分是为了在一系列提供程序上保持兼容)。但是,即使是 LINQ-to-SQL(支持更多 SQL-Server 特定结构,例如 UDF)也不支持全文 AFAIK。
我相信你需要使用存储过程/udf。首选 UDF 方法,因为元数据层要强大得多,并且可以在 db 服务器上组合 - 但是,Entity Framework 不像 UDF(或者上次我检查时没有);-p 所以你可能有使用存储过程。
我见过这样的 EF4 代码:
var query = context.ExecuteStoreQuery<Person>(
"SELECT * FROM People WHERE FREETEXT(*,{0})",
searchText
).AsQueryable();
在某些情况下,这可能比创建存储过程或 UDP 更简单。