将参数传递给Dapper Select查询Oracle数据库

时间:2017-10-18 11:02:15

标签: asp.net oracle select model-view-controller dapper

我正在尝试将参数传递给Dapper以获取Oracle数据库中的选择查询,但不知何故,它不能与“:”标识符一起使用。

使用字符串连接可以正常工作:
    string req = "SELECT * FROM contact WHERE code_comite = '"; req += user.Comite + "' AND (pers_name LIKE '"; req += name + "%' OR pers_surname LIKE '" + name + "%')"; contacts = db_conn.Query<Contact>(req).ToList();

但不是Dapper参数传递:

string comite = "'" + user.Comite + "'";//e.g. comite = '120'
name = "'" + name + "%'";//e.g. name = 'John%'
contacts = db_conn.Query<Contact>("SELECT * FROM contact WHERE code_comite = :code_comite AND (pers_nom LIKE :search OR pers_prenom LIKE :search)", new { code_comite = comite, search = name }).ToList();

它应该使用相同的字符串,但第二个示例不返回任何内容。

1 个答案:

答案 0 :(得分:2)

传递参数时,不需要在值周围加上引号。相反,这会导致失败,因为引擎将搜索包含由文字引号括起的值的列 只需使用纯文本

 string comite = user.Comite;
 name = name + "%";
 contacts = db_conn.Query<Contact>(@"SELECT * FROM contact 
          WHERE code_comite = :code_comite 
            AND (pers_nom LIKE :search 
                 OR pers_prenom LIKE :search)", 
  new { code_comite = comite, search = name }).ToList();