Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do you do full text search (FTS) with Linq to ADO.NET entity framework?

Now that SQL Server 2008 has full text search built in. I'm looking to use it to power my website's search. I'm also looking at using ADO.NET entity framework for my ORM but I was wondering how do you do full text search (FTS) with Linq to ADO.NET entity framework?

Is there any support in ADO.NET entity framework or am I stuck using the method of creating a function which uses the full text search predicates?

like image 294
ajma Avatar asked Feb 10 '09 21:02

ajma


2 Answers

Entity Framework supports only a subset of the sql functionality available (partly to remain compatible over a range of providers). However, even LINQ-to-SQL (which supports a lot more SQL-Server specific constructs, such as UDFs) doesn't support full-text AFAIK.

I believe you need to use a stored procedure / udf. The UDF approach is preferred, as the metadata layer is much stronger, and it is composable at the db server - however, Entity Framework doesn't (or didn't, last time I checked) like UDFs ;-p So you may have to use a stored procedure.

like image 167
Marc Gravell Avatar answered Oct 18 '22 23:10

Marc Gravell


I've seen code like this for EF4:

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

This may be simpler than creating a stored proc or UDP in some cases.

like image 24
Drew Noakes Avatar answered Oct 18 '22 23:10

Drew Noakes