Che*_*hev 6 c# linq linq-to-entities entity-framework entity-framework-4
我有一个使用Entity Framework为数据库建模的博客应用程序.这个博客的问题是找到我正在寻找的东西变得很困难.它需要一个搜索功能,但我不知道如何使用SQL和/或LINQ to Entities实现它.
现在我正在使用这个LINQ查询搜索我的数据库,但它似乎应该更好.
public IEnumerable<BlogPost> SearchBlogPosts(string query, int page, int itemsPerPage)
{
var result = _dataContext.BlogPosts
.Where(BlogPostContains(query))
.OrderByDescending(x => x.PostedDate)
.Skip((page - 1) * itemsPerPage)
.Take(itemsPerPage),
return result;
}
private Func<BlogPost, bool> BlogPostContains(string query)
{
return x => x.Title.Contains(query) || x.Body.Contains(query) || x.Author.Contains(query);
}
Run Code Online (Sandbox Code Playgroud)
与此相关的一个大问题是搜索区分大小写.
问题1)有没有更好的方法来搜索LINQ to Entities?
问题2)只用简单的SQL怎么样?我如何在SQL Server中编写搜索存储过程,以便我可以在EF而不是LINQ中映射和使用它?
我只想在数据库中执行不区分大小写的搜索,以保持良好的性能.
提前致谢.
对此的标准方法是SQL全文搜索.您必须在DB上启用全文,指定要进行全文索引的列,然后才能使用这些列使用SQL Contains查询.
Linq to Entities目前不支持全文搜索查询 - 您将不得不求助于标准SQL查询.您可以使用ExecuteStoreQuery()至少将搜索结果映射到键入的结果.