verificando el valor nulo usando dapper.net

c# dapper sql-server

Pregunta

Estoy usando dapper para leer valores en un objeto que creé donde usamos un procedimiento almacenado básico.

IF EXISTS(SELECT LOWER(UT.UserID) FROM UserTable UT WHERE UT.UserID = @UserId)
BEGIN
    SELECT 
    UT.UserID,
    UT.Name, 
    UT.Surname, 
    UT.TrackingString
    FROM UserTable UT
    WHERE UT.UserID = @UserId
END

y este es el código en mi modelo de vista.

 IDbConnection connection;
        using (connection = new SqlConnection(ConfigurationManager.ConnectionStrings["Liberty"].ToString()))
        {
            var result = connection.QueryMultiple("GetUserData", new { UserId = userId.ToLower() }, commandType: CommandType.StoredProcedure);
            user = result.Read<UserData>().First();

        }

¿Cómo puedo verificar el resultado si las columnas fueron seleccionadas? Como en este momento recibo una Excepción de Operación Invalid si no hay datos de usuario (si el usuario no existe).

Respuesta aceptada

Usa el método correcto de Linq. Está utilizando uno que no trata los resultados como un resultado no válido, mientras que su consulta puede devolver ningún valor si dicho usuario no existe.

Cambie a un método que no arroje ningún elemento en la declaración enumerable, luego verifique null y trátelo con gracia.

    // snip
    user = result.Read<UserData>().FirstOrDefault();
}
if(user == null)
{
    // no such user exists, go do something about it

Respuesta popular

¿Por qué estás usando QueryMultiple? Use Query <> en su lugar. Entonces simplemente haz result.Count () antes de result.first (). O haga FirstOrDefault ()

¿También puedo sugerir que crees una clase para recibir los datos?

public class User
{
    public int UserID {get; set;}
....
}

Luego use connection.Query ("....", nuevo ...)

Mucho mejor para los ojos.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué