Dapper y DynamicParameter ()

dapper

Pregunta

Estoy mirando el código y no puedo leerlo. También traté de encontrar material y ejemplos, pero no pude encontrar documentación específica o cualquier documentación que pudiera ayudarme a comprender el problema. ¿Alguien puede leerme el código y si hay alguna documentación para leerlo?

Al principio, mi pregunta es por qué necesitamos usar DynamicParameter() que es un objeto de Dapper. Tampoco estoy seguro de qué significa => .

public void validRecord(string fileName, string rawContent, int userId)
{
    Run(conn => conn.Execute("[dbo].[storedProc_GETDone]"
        , new DynamicParameters
            (new Dictionary<string, object>
                {
                    {"fileName", fileName},
                    {"rowContent", rawContent},
                    {"userCreated", userId},
                }), CommandType.StoredProcedure));
}

Respuesta experta

Run no es parte de dapper, pero => en C # se usa para crear una expresión lambda , en este caso espero que sea una Action<DbConnection> , es decir, supongo que su ejecución se parece mucho a esto:

Run(Action<DbConnection> action) {
    using(var conn = CreateConnection()) {
        conn.Open();
        action(conn);
    }
}

es decir, "Voy a darte una conexión, ¿qué quieres hacer con eso?" - en este caso, usted elige Execute un procedimiento almacenado.

Ahora, vale la pena señalar que en su ejemplo no hay beneficio en el uso de DynamicParameters , ya que la información es bien conocida; puede usar:

Run(conn => conn.Execute("[dbo].[storedProc_GETDone]",
    new { fileName, rawContent, userCreated = userId },
    CommandType.StoredProcedure));

que funcionaría igual de bien. Por lo tanto, en respuesta a "¿por qué necesitamos usar DynamicParameter ? " No es así en este escenario. Sin embargo, en algunos casos es posible que lo haga, especialmente si está creando SQL sobre la marcha manualmente, por ejemplo:

if(name != null) {
    sql.Append("and Name = @name ");
    args.Add("name", name);
}


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é