En el podcast herding code 14 alguien menciona que stackoverflow muestra las consultas que se ejecutaron durante una solicitud en la parte inferior de la página.Cómo rastrear consultas en un DataContext Linq-a-sql
Me parece una excelente idea. Cada vez que se carga una página, quiero saber qué sentencias SQL se ejecutan y también un recuento de la cantidad total de viajes de ida y vuelta. ¿Alguien tiene una solución clara para este problema?
¿Cuál cree que es un número aceptable de consultas? Estaba pensando que, durante el desarrollo, podría hacer que mi aplicación arrojara una excepción si se requieren más de 30 consultas para representar una página.
EDIT: Creo que no debo haber explicado mi pregunta claramente. Durante una solicitud HTTP, una aplicación web puede ejecutar una docena o más sentencias SQL. Quiero que esas declaraciones se agreguen al final de la página, junto con un recuento del número de declaraciones.
está aquí mi solución:
creé una clase TextWriter que el DataContext puede escribir a:
public class Logger : StreamWriter
{
public string Buffer { get; private set; }
public int QueryCounter { get; private set; }
public Logger() : base(new MemoryStream())
{}
public override void Write(string value)
{
Buffer += value + "<br/><br/>";
if (!value.StartsWith("--")) QueryCounter++;
}
public override void WriteLine(string value)
{
Buffer += value + "<br/><br/>";
if (!value.StartsWith("--")) QueryCounter++;
}
}
En la configuración constructor I de la DataContext el registrador:
public HeraldDBDataContext()
: base(ConfigurationManager.ConnectionStrings["Herald"].ConnectionString, mappingSource)
{
Log = new Logger();
}
Por último, Uso el evento Application_OnEndRequest
para agregar los resultados a la parte inferior de la página:
protected void Application_OnEndRequest(Object sender, EventArgs e)
{
Logger logger = DataContextFactory.Context.Log as Logger;
Response.Write("Query count : " + logger.QueryCounter);
Response.Write("<br/><br/>");
Response.Write(logger.Buffer);
}
Nos ayudó a obtener: Db.Log = Console.Out; – Haroon