我目前正在使用最新版本的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
答案 0 :(得分:0)
您缺少SQL中的语法。你拥有的是
WHERE Foo=:fooBar=:bar
您需要AND
或OR
以及中间的一些空格。
在这种情况下,您实际上不需要DynamicParameters
,顺便说一句。这里的“经典”短小精悍用法只是:
new { classID, personID }
作为参数对象。