¿Por qué obtengo un tiempo de ejecución diferente cuando uso DataContext.ExecuteQuery con parámetros implícitos versus explícitos?
Frecuentes
Visto 189 equipos
1
Tengo una tabla que contiene estadísticas de ensamblaje de prueba de compilaciones TFS de la siguiente manera:
AssemblyName Duration TestResults MsPerResult Branch
Ass1.dll 100 2 50 $/branch1
Ass2.dll 200 2 100 $/branch1/sub1
Ass3.dll 400 2 200 $/branch1/sub1/subsub1
...
Además, tengo una clase de resumen para contener un resultado DataContext.ExecuteQuery<>
public class AssemblyStatistics
{
public string AssemblyName { get; set; }
public int TestResultCount { get; set; }
public long ValueInMs { get; set; }
}
Si ejecuto el siguiente código, mi consulta siempre toma el mismo tiempo, incluso si limito los resultados consultando solo una subrama:
context.ExecuteQuery<AssemblyStatistics>(
"SELECT TOP 10 AssemblyName, SUM(Duration) AS ValueInMs, SUM(TestResults) AS TestResultCount FROM AssembliesByDuration WHERE Branch LIKE {0} GROUP BY AssemblyName ORDER BY SUM(Duration) DESC", "$/branch1/sub1%").ToList();
sin embargo, al usar el siguiente formato (no seguro para la web), el tiempo de ejecución disminuye como se esperaba
context.ExecuteQuery<AssemblyStatistics>(
@"SELECT TOP 10 AssemblyName, SUM(Duration) AS ValueInMs, SUM(TestResults) AS TestResultCount FROM AssembliesByDuration WHERE Branch LIKE '"
+ "$/branch1/sub1%" + "' GROUP BY AssemblyName ORDER BY SUM(Duration) DESC").ToList();
¿Me estoy perdiendo algo o es solo un problema con Linq2SQL que evalúa el LIKE después?
1 Respuestas
0
Parece que te faltan las comillas simples alrededor de {0} en la primera consulta.
Respondido 31 Jul 12, 15:07
No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas c# sql linq-to-sql or haz tu propia pregunta.
El uso de comillas simples no devuelve ningún resultado. Los datos devueltos por ambas consultas son los mismos... - Markus