Dapper DynamicParameters devuelve error

c# dapper oracle

Pregunta

Actualmente estoy usando la última versión de dapper, versión 1.50.0-beta9. El proveedor que uso para Oracle es Oracle.ManagedDataAccess , versión 12.1.2400. Me aparece un error al usar los parámetros dinámicos de Dapper. Mi código es similar al siguiente ejemplo:

public class PersonDAL : OracleBase {

    public PersonDAL() : base() {
    }

    public PersonDAL(string connectionString) : base(connectionString) {
    }

    public const string ParamPersonID = ":personid";
    public const string ParamClassID = ":classid";
    private const string getPersonByClassAndID = "SELECT PERSON_ID AS PersonID, PERSON_DESCRIPTION AS PersonDescription, CLASS_ID AS ClassID FROM TABLE_PERSON WHERE PERSON_ID = " + ParamPersonID + " AND CLASS_ID = " + ParamClassID;

    public SystemModel GetModelByPersonID_ClassID(int classID, int personid) {
        DynamicParameter = new DynamicParameters();
        DynamicParameter.Add(ParamClassID, classID);
        DynamicParameter.Add(ParamPersonID, personid);
        return Connection.QuerySingle<SystemModel>(getPersonByClassAndID, DynamicParameter);
    }
}

Esto está devolviendo este error:

Enlace de parámetros inválido
Nombre del parámetro: personidAND

Respuesta experta

Le falta la sintaxis en el SQL. Lo que tienes es

WHERE Foo=:fooBar=:bar

Necesita un AND u OR y algunos espacios en el medio.

En realidad, no necesita DynamicParameters en este escenario, por cierto. El uso "clásico" dapper aquí sería simplemente:

new { classID, personID } 

como los parámetros se oponen



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é