Dapper DynamicParameters返回错误

时间:2016-04-20 06:10:47

标签: c# oracle dapper

我目前正在使用最新版本的dapper,版本1.50.0-beta9。我用于Oracle的提供程序是Oracle.ManagedDataAccess,版本12.1.2400。 使用dapper的动态参数时出错。我的代码类似于下面的示例:

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

这是返回此错误:

  

参数绑定无效
  参数名称:personidAND

1 个答案:

答案 0 :(得分:0)

您缺少SQL中的语法。你拥有的是

WHERE Foo=:fooBar=:bar

您需要ANDOR以及中间的一些空格。

在这种情况下,您实际上不需要DynamicParameters,顺便说一句。这里的“经典”短小精悍用法只是:

new { classID, personID } 

作为参数对象。