usando Dapper con '?'

c# dapper db2

Pregunta

Estoy intentando usar Dapper para comunicarme con un servidor DB2. El servidor DB2 no soporta parámetros nombrados fuera de la caja. Espera un signo de interrogación en la consulta para cada parámetro. ¿Hay una manera de apoyar esto con Dapper? Tal vez Dapper pueda reemplazar todas @Name cosas de @Name ? antes de llamar a la consulta? Y si es así, ¿Dapper genera los parámetros en orden?

De lo contrario, parece que los controladores de cliente de DB2 más nuevos admiten parámetros con nombre, pero está desactivado de forma predeterminada. No puedo averiguar cómo encenderlo. Intenté agregar ese parámetro a la sección db2cli.ini [COMÚN] en mi cliente sin ningún cambio en el comportamiento. Eso fue para el controlador OleDB .

Actualización: entonces probé el controlador .NET. Ese parece analizar los nombres de las variables, pero todavía me sale un error extraño al ejecutar:

{"ERROR [07004] [IBM] [DB2 / NT64] SQL0313N El número de variables en la sentencia EXECUTE, el número de variables en la sentencia OPEN o el número de argumentos en una sentencia OPEN para un cursor parametrizado no es igual a el número de valores requeridos. "}

Mi declaración se parece a esto:

INSERT INTO XD.ALERT (PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, :Level, :AlertID, :AlertDesc, :DateTime)

¿Un INSERT cuenta como EJECUTAR? Por lo que sé, tengo cuatro parámetros en la consulta y cuatro en el objeto de comando que se está utilizando. (Estoy usando SqlMapper.cs directamente y puedo ver todo en el depurador).

Respuesta popular

Puedes probar esto:

    public void SaveAlert(int? level, int? alertId, string alertDesc, DateTime date)
    {            
        _conn.Execute("INSERT INTO XD.ALERT(PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, @Level, @AlertID, @AlertDesc, @DateTime)",                
            new {
                Level = level,
                AlertId = alertId,
                AlertDesc = alertDesc,
                DateTime = date
            });
    }


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é