2014-08-13 4 views
1

Я пытался вызвать хранимую процедуру Postgresql с помощью Dapper, и каждый пример, который я видел, имеет то же самое, но по какой-то причине он не работает для меня. Похоже, что он вызывает хранимую процедуру, но никогда не возвращает никаких результатов. Это мой код:Вызов хранимой процедуры с Dapper и Postgres

using (PgSqlConnection c = new PgSqlConnection(Configuration.ConnectionString("database_string"))) 
     { 
      var values = c.Query<TagValue>("get_values", new { _tag = tag, _start = start, _end = end }, commandType: CommandType.StoredProcedure); 
     } 

Я не могу получить это, чтобы возвращать любые результаты, но он также не вызывает никаких ошибок. Пожалуйста, помогите хотя бы указать мне в сторону взгляда. Если я запустил запрос, используя строку, такую ​​как:

values = c.Query<TagValue>(string.Format(@"select * from get_values('{0}', '{1}', '{2}');", tag, start, end)); 

он работает правильно и возвращает правильные результаты.

+0

Я не могу, это не мое решение, клиент потребовал его – GBreen12

+0

Вам также необходимо предоставить определение функции, поэтому мы видим типы данных IN и OUT функции. Кроме того, можете ли вы проверить журналы своего сервера db, чтобы увидеть операторы, фактически отправленные на сервер? Может быть другая копия функции, использующей разные типы входных данных ... –

+0

Что здесь выглядит get_values? Каковы параметры? Что он выбирает? Как выглядит тип TagValue? Что происходит? Ошибка? Нулевые строки? –

ответ

0

Это, как я называю, сохраненный с помощью проки щеголеватого

public class Parameters : DynamicParameters 
{ 
    public new void Add(string name, object value = null, DbType? dbType = null, ParameterDirection? direction = null, int? size = null) 
    { 
     if (dbType == null && value is string) 
     { 
      if (size == null) 
      { 
       dbType = DbType.AnsiString; 
      } 
      else 
      { 
       dbType = DbType.AnsiStringFixedLength; 
      } 
     } 
     base.Add(name, value, dbType, direction, size); 
    } 
} 

const string query = @"yourquery" 
Parameters p = new Parameters(); 
     p.Add("@Tag", tag); 
     p.Add("@Start", start); 
     p.Add("@End", end); 
var values = c.Query<TagValue>("get_values", p,CommandType.StoredProcedure); 

DynamicParameters является частью Dapper сборки.

Надеюсь, это поможет.

+0

Разве это сработало для вас? –

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