C# Dapper DynamicParameters返回错误

C# Dapper DynamicParameters返回错误,c#,oracle,dapper,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

我目前使用的是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);
    }
}
公共类PersonDAL:OracleBase{
publicpersondal():base(){
}
public PersonDAL(string connectionString):base(connectionString){
}
public const string ParamPersonID=“:personid”;
公共常量字符串ParamClassID=“:classid”;
private const string getPersonByClassAndID=“选择PERSON\u ID作为PersonID,PERSON\u DESCRIPTION作为PersonDescription,CLASS\u ID作为表\u PERSON中的ClassID,其中PERSON\u ID=“+ParamPersonID+”和CLASS\u ID=“+paramplassid;
公共系统模型GetModelByPersonID\u ClassID(int-ClassID,int-personid){
DynamicParameter=新的DynamicParameters();
DynamicParameter.Add(ParamClassID,classID);
DynamicParameter.Add(ParamPersonID,personid);
返回连接.QuerySingle(getPersonByClassAndID,DynamicParameter);
}
}
这将返回此错误:

无效的参数绑定
参数名称:PersonId


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

WHERE Foo=:fooBar=:bar
你需要一个<代码>和<代码>或<代码>或和中间的一些空间。

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

new { classID, personID } 

作为参数对象。

是的,刚刚看到我忘记在查询中添加AND。但无论哪种方式,当我在查询中有AND时,我都会得到:无效的参数绑定参数名称:personidAND。。。。因此,您是说我必须尝试将返回更改为:return Connection.QuerySingle(getSystemBySystemCode,new{classID,personID});好的,只是你的建议,我仍然得到相同的问题无效的参数绑定参数名称:PersonidOK修复了它谢谢,下载了dapper并进行了调试it@BananaGuard最后一个问题是什么?因为到目前为止,我看到的都是格式不正确的SQL…上面的解决方案现在可以工作了