2016-04-24 1 views
0

Я пытаюсь запустить этот простой пример Dapper из набора тестов в Mysql 5.6.10 (AWS Aurora).Параметр вывода Dapper интерпретируется как null по mysql

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

Я хотел бы использовать два выходных параметра для возврата количества строк, на которые влияет инструкция insert и последний вставленный идентификатор.

+0

Воспроизводится на соединителе 6.9.5 и Dapper 1.42. (и местный MySql 5.6.14) – Steve

+1

Окончательно проблема не в самом Dapper. Этот синтаксис _set @c = @a + @b "недействителен для MySql также в стандартном запросе (не Dapper). – Steve

+1

Как отмечает @Steve: если это недопустимый синтаксис для вашего аромата сервера базы данных, он просто isn ' tup to work. Dapper делает вещи более удобными, но это не изменяет того, что поддерживает сервер. –

ответ

1

Я нашел, что невозможно получить параметр из mysql с dapper, поэтому я немного изменил код, чтобы добиться результата.

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); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^