我正在尝试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,但没有发现类似的错误报告;似乎我错过了一些非常明显的东西但是唉 - 我的咖啡用完了。我很感激任何提示。
答案 0 :(得分:6)
在oracle的SQL风格中,命名参数以:
为前缀。请尝试使用:Id
代替@Id
。