2016-04-24 21 views
0

我試圖從Mysql 5.6.10(AWS Aurora)中的測試套件運行這個簡單的Dapper示例。Dapper Output參數解釋爲null

var p = new DynamicParameters(new { a = 1, b = 2 }); 
p.Add("c", dbType: DbType.Int32, direction:ParameterDirection.Output); 
cnn.Execute(@"set @c = @a + @b", p); 
var results = p.Get<int>("@c"); 

但是,正在拋出異常。 @c被解釋爲NULL> enter image description here

我想使用兩個輸出參數來返回受插入語句和最後插入的ID影響的行數。

+0

轉載於連接器6.9.5和Dapper 1.42上。 (和本地MySql 5.6.14) – Steve

+1

確切地說,問題不在於Dapper本身。這個語法_set @c = @a + @b「對於MySql在標準(非Dapper)查詢中也是無效的 – Steve

+1

As @Steve註釋:如果它對於數據庫服務器來說是無效的語法,不需要工作,Dapper使事情變得更加方便,但它不會改變服務器支持的內容。 –

回答

1

我發現用dapper從mysql中取出參數似乎是不可能的,所以我修改了你的代碼以獲得結果。

var p = new DynamicParameters(new { a = 1, b = 2 }); 
//p.Add("c", dbType: DbType.Int32, direction: ParameterDirection.Output); 
//conn.Execute(@"set @c = @a + @b", p); 
using (var reader = conn.ExecuteReader(@"set @c = @a + @b; select @c;", p)) 
{ 
    //var results = p.Get<int>("@c"); 
    if (reader.Read()) 
    { 
     var result = reader.GetInt32(0); 
    } 
}