Когда следует использовать CompiledQuery?

У меня есть таблица:

-- Tag

ID  | Name
-----------
1   | c#
2   | linq
3   | entity-framework

У меня есть класс, который будет иметь следующие методы:

IEnumerable<Tag> GetAll();
IEnumerable<Tag> GetByName();

Должен ли я использовать в этом случае скомпилированный запрос?

static readonly Func<Entities, IEnumerable<Tag>> AllTags =
    CompiledQuery.Compile<Entities, IEnumerable<Tag>>
    (
        e => e.Tags
    );

Тогда мой Метод GetByName будет выглядеть следующим образом:

IEnumerable<Tag> GetByName(string name)
{
    using (var db = new Entities())
    {
        return AllTags(db).Where(t => t.Name.Contains(name)).ToList();
    }
}

Который генерирует SELECT ID, Name FROM Tag и выполняет Where в коде. Или мне следует избегать CompiledQuery в этом случае?

В основном я хочу знать, когда мне следует использовать скомпилированные запросы. Кроме того, на веб-сайте они компилируются только один раз для всего приложения?

22
задан BrunoLM 8 February 2011 в 12:04
поделиться