none
Como depurar querys Linq ? RRS feed

  • Pregunta

  • Hola ..

    Nesecito depurar metodos en los que utilizo querys con Linq , antes mi depurador lde Visual Studio lo hacia bien ..creo que desactive algo por que ahora no lo esta haciendo ...? 

    Que debo hacer para corregir esto ?

    metodo de ejemplo :

            public string ObtenerCodigoRestablecerPassword(string email)
            {
                ResetPassword C = new ResetPassword();
                try
                {
                    using (SudokuContext context = new SudokuContext())
                    {
                        C = context.ResetPassword.Where(x => x.Email == email && x.Estatus == false) .OrderByDescending(x => x.Id) .Take(1).FirstOrDefault();
                        if (C != null)
                            return C.Codigo;
                    }
                }
                catch{ }
                return string.Empty;
            }


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    sábado, 17 de agosto de 2019 17:17

Todas las respuestas

  • ¿Qué es exactamente lo que quieres depurar? ¿La consulta no está devolviendo los valores que esperabas? Un truco que he encontrado útil en varias ocasiones es activar el Profiler de SQL Server e iniciar una captura. A continuación se ejecuta el programa hasta que pase por la sentencia LINQ, y entonces se mira qué es lo que ha capturado el Profiler. Eso te muestra cuál es la sentencia SQL en la que se convirtió la consulta LINQ. Con frecuencia, al ver qué SQL se ha generado, te das cuenta de en qué difiere de lo que esperabas y eso te da la pista de qué falla en la consulta LINQ.

    Por cierto, es bastante mala práctica la de meter un catch vacío. Esto es algo que normalmente siempre deberías evitar, salvo en casos super-excepcionales en los que se debe meter un gran bloque de comentarios dentro del catch explicando el razonamiento que ha llevado a dejarlo vacío. Como mínimo, dentro del catch se debería salvar un "log" que deje grabada en algún sitio cuál fue la excepción con todos sus detalles. Esto es de gran ayuda para depurar el programa, especialmente si falla cuando ya está en producción.

    sábado, 17 de agosto de 2019 18:34
    Moderador
  • Hola..

    En realidad lo que deseo hacer , es ingresar paso a paso por instruccion dentro de ese metodo...no se por que el intelisence no lo esta haciendo


    EFRAIN MEJIAS C VALENCIA - VENEZUELA

    sábado, 17 de agosto de 2019 20:57
  • hola

    How to Debug LINQ queries in C#

    hacer un debug de linq no es facil puede que dependa de la version de Visual Studio que estes utilizando

    No tienes que usar el Take(1) si usas el FirstOrDefault()

    public string ObtenerCodigoRestablecerPassword(string email)
    {
    
    	using (SudokuContext context = new SudokuContext())
    	{
    		var C = context.ResetPassword.Where(x => x.Email == email && !x.Estatus)
    								.OrderByDescending(x => x.Id)
    								.FirstOrDefault();
    		if (C != null)
    			return C.Codigo;
    	}
    
    	return string.Empty;
    }

    ----

    Lo que si recomendaria es que que quites el

     catch{ }

    esa es una pesima practica de programacion

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    domingo, 18 de agosto de 2019 23:19