Dapper和Oracle参数化查询 - ORA-01036:非法变量名称/编号

c# dapper oracle

我正在尝试Dapper。以下代码完美无缺:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = 'uid01'"
        , null)
        .ToList();
}

但是如果不使用硬编码参数,我会尝试通过参数化查询和匿名类传递它,如下所示:

using (var conn = 
    new OracleConnection(
        "Uid=dbusr;Pwd=dbusrpwd;Server=oraserver;"))
{
    var col = 
        conn.Query<User>(
        "SELECT * FROM Users WHERE UserName = @Id"
        , new { Id = "uid01" })
        .ToList();
}

我收到以下错误:

ORA-01036:非法变量名称/编号

我在SO周围搜索,但没有发现类似的错误报告;似乎我错过了一些非常明显的东西但是唉 - 我的咖啡用完了。我会很感激任何提示。

一般承认的答案

在oracle的SQL风格中,命名参数的前缀是: 。尝试:Id而不是@Id



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因