Dapper не добавляет параметры

Я пытаюсь использовать Dapper для наших сложных запросов, чтобы удалить любые потерянные накладные расходы, которые ранее существовали с NH.

У меня есть следующий запрос (обратите внимание, что он значительно сократился):

SELECT DISTINCT *
FROM  tasks t 
WHERE t.initials = @UserInits

Который вызывается через наш репозиторий так:

taskRepo.RawExec<TaskListItemDTO>(Query,new {UserInits = "SAS"})

Наша реализация DapperExec состоит в следующем:

public IEnumerable<T> RawExec<T>(string SQL, object param)
{
   return _session.Connection.Query<T>(SQL,param);
}

Но Dapper, похоже, не добавляет параметры в запрос, и в результате мы получаем синтаксические ошибки.

Если это поможет, мы подключаемся через ODBC к Informix.

Спасибо

Пример кода обновления:

Извините, что так долго, был очень занят работой! Ниже приведен пример для сервера MS SQL (2008), который должен просто запрашивать sys.all_objects (systables?) со значением параметра 1 или 0, но в этом примере, поскольку ODBC не использует именованные параметры, это не сработает. .

using Dapper;
using DapperSQL;
using System.Collections.Generic;
using System.Data;
using System.Data.Odbc;

namespace DapperTests
{
    public class SQLEx
    {
        private OdbcConnection GetConnection()
        {
            var cnn = new OdbcConnection("DSN=ODBCSOURCE");
            cnn.Open();

            // wrap the connection with a profiling connection that tracks timings 
            return cnn;
        }

        public IEnumerable<object> DapperTest()
        {
            using (OdbcConnection conn = GetConnection())
            {
                return conn.Query("SELECT * FROM sys.all_objects where is_ms_shipped = ?", new { is_ms_shipped = 1 });
            }
        }
}

person Stuart.Sklinar    schedule 20.09.2012    source источник
comment
По памяти у ODBC/ifx много проблем с именованными параметрами. Показанный запрос должен работать в любой разумной команде с поддержкой имен. Насколько близка отображаемая команда к действительному коду? показанный код демонстрирует эту проблему?   -  person Marc Gravell    schedule 21.09.2012
comment
Я только что попробовал приведенный выше код, чтобы убедиться, что он работает в простейшей форме, и все равно не повезло :(   -  person Stuart.Sklinar    schedule 21.09.2012
comment
можете ли вы включить пример необработанного кода, который работает непосредственно с соединением odbc   -  person Sam Saffron    schedule 24.09.2012
comment
Чтобы добавить к комментарию Марка, по моему опыту, запрос к базе данных Informix с использованием ODBC может быть разочаровывающим. Чтобы узнать точный формат, в котором ODBC на самом деле отправляет ваши запросы в базу данных для оценки, в прошлом я добился немалого успеха, используя анализатор пакетов, такой как Wireshark, и проверяя необработанные данные в пакетах TCP/IP.   -  person PriceHardman    schedule 05.11.2014


Ответы (1)


Я знаю, что это старый пост, просто используйте SP вместо запроса, пожалуйста, проверьте эту ссылку Dapper с использованием процедуры хранения ODBC Input parm, здесь используется sybase odbc Sp, все odbc используют одинаковую технику, хотелось бы, чтобы она работала в Informix.

person Masa sih    schedule 20.07.2015