tengo una tabla:¿Cuándo debería usar CompiledQuery?
-- Tag
ID | Name
-----------
1 | c#
2 | linq
3 | entity-framework
tengo una clase que tendrán los siguientes métodos:
IEnumerable<Tag> GetAll();
IEnumerable<Tag> GetByName();
¿Debo usar una consulta compilada en este caso?
static readonly Func<Entities, IEnumerable<Tag>> AllTags =
CompiledQuery.Compile<Entities, IEnumerable<Tag>>
(
e => e.Tags
);
Entonces mi método GetByName
sería:
IEnumerable<Tag> GetByName(string name)
{
using (var db = new Entities())
{
return AllTags(db).Where(t => t.Name.Contains(name)).ToList();
}
}
que genera un SELECT ID, Name FROM Tag
y ejecutar Where
en el código. ¿O debería evitar CompiledQuery
en este caso?
Básicamente, quiero saber cuándo debo usar las consultas compiladas. Además, en un sitio web, se compilan solo una vez para toda la aplicación.
El ejemplo que proporcione fallará en el tiempo de ejecución (debe pasar el contexto, y no puede usar 'Func <>' sin 'Expresión <>'. Además, compilando aún más la consulta ('Donde (t = > ... ')" descompila "el resultado. Pero la pregunta es válida. –
En .NET 4.5 se realizará automáticamente. Consulte" Entidad Framework 5: control de la compilación automática de consultas "http://blogs.msdn.com/ b/stuartleeks/archive/2012/06/12/entity-framework-5-controlling-automatic-query-compilation.aspx) –