简体   繁体   中英

Dapper DynamicParameters returning error

I am currently using the latest version of dapper, version 1.50.0-beta9. The provider I am using for Oracle is the Oracle.ManagedDataAccess , version 12.1.2400. I am getting an error when using dapper's dynamic parameters. My code is similar to the example below:

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);
    }
}

This is returning this error:

Invalid parameter binding
Parameter name: personidAND

You are missing syntax in the SQL. What you have is

WHERE Foo=:fooBar=:bar

You need a AND or OR and some spaces in the middle.

You don't actually need DynamicParameters in this scenario, btw. The "classic" dapper usage here would be just:

new { classID, personID } 

as the parameters object.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM