我想使用Dapper将数据库不可知代码用于例如PostgreSQL和Oracle带有尽可能少的数据库修饰代码。对于SQL Server和PostgreSQL,此INSERT代码正在正常运行:
var item = new Item { Name = "Test Name", Number = "Test Number" };
await Connection.ExecuteAsync(@"INSERT INTO Table (Name, Number) VALUES (@Name, @Number);", item);
在Oracle(版本11 xe)上,我得到了ORA-00936:缺少表达式。
我需要使用DynamicParameters之类的工具进行剪裁吗?
答案 0 :(得分:0)
您需要在查询参数前使用:
而不是@
。这是甲骨文的事情。
var item = new Item { Name = "Test Name", Number = "Test Number" };
await Connection.ExecuteAsync(@"INSERT INTO Table (Name, Number) VALUES (:Name, :Number)", item);