Как реализовать функцию поиска с помощью Entity Framework?

У меня есть приложение для блога , которое моделирует базу данных с помощью Entity Framework. Проблема с этим блогом в том, что стало трудно найти то, что я ищу. Ему нужна функция поиска, но я не уверен, как реализовать это с помощью SQL и / или LINQ to Entities.

Прямо сейчас я ищу в своей базе данных этот запрос LINQ, но похоже, что он должен быть лучше.

    public IEnumerable 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 BlogPostContains(string query)
    {
        return x => x.Title.Contains(query) || x.Body.Contains(query) || x.Author.Contains(query);
    }

] Одна большая проблема заключается в том, что поиск чувствителен к регистру.

Вопрос 1) Есть ли лучший способ выполнить поиск с помощью LINQ to Entities?

Вопрос 2) А как насчет простого SQL? Как мне написать хранимую процедуру поиска в SQL Server, чтобы я мог отображать и использовать ее в EF вместо LINQ?

Мне просто нужен поиск без учета регистра, который выполняется в базе данных, чтобы поддерживать хорошую производительность.

Заранее спасибо.

6
задан Chev 10 August 2011 в 18:27
поделиться