简体   繁体   English

Dapper DynamicParameters返回错误

[英]Dapper DynamicParameters returning error

I am currently using the latest version of dapper, version 1.50.0-beta9. 我目前正在使用最新的dapper版本1.50.0-beta9。 The provider I am using for Oracle is the Oracle.ManagedDataAccess , version 12.1.2400. 我用于Oracle的提供程序是Oracle.ManagedDataAccess版本12.1.2400。 I am getting an error when using dapper's dynamic parameters. 使用dapper的动态参数时出现错误。 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 参数名称:personidAND

You are missing syntax in the SQL. 您在SQL中缺少语法。 What you have is 你拥有的是

WHERE Foo=:fooBar=:bar

You need a AND or OR and some spaces in the middle. 您需要在ANDOR中间加上一些空格。

You don't actually need DynamicParameters in this scenario, btw. 在这种情况下,实际上您不需要DynamicParameters ,顺便说一句。 The "classic" dapper usage here would be just: 这里的“经典” dapper用法将是:

new { classID, personID } 

as the parameters object. 作为参数对象。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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