Sql 不添加参数

Sql 不添加参数,sql,odbc,informix,dapper,Sql,Odbc,Informix,Dapper,我试图在复杂的查询中使用Dapper,以消除NH以前存在的任何开销损失 我有以下疑问(注意这已经大大缩小了): 通过我们的存储库调用,如下所示: taskRepo.RawExec<TaskListItemDTO>(Query,new {UserInits = "SAS"}) taskRepo.RawExec(查询,新{UserInits=“SAS”}) 我们对DapperExec的实施如下: public IEnumerable<T> RawExec<T>

我试图在复杂的查询中使用Dapper,以消除NH以前存在的任何开销损失

我有以下疑问(注意这已经大大缩小了):

通过我们的存储库调用,如下所示:

taskRepo.RawExec<TaskListItemDTO>(Query,new {UserInits = "SAS"})
taskRepo.RawExec(查询,新{UserInits=“SAS”})
我们对DapperExec的实施如下:

public IEnumerable<T> RawExec<T>(string SQL, object param)
{
   return _session.Connection.Query<T>(SQL,param);
}
public IEnumerable RawExec(字符串SQL,对象参数)
{
返回_session.Connection.Query(SQL,param);
}
但是Dapper似乎没有将参数添加到查询中,因此,我们得到了语法错误

如果有帮助,我们将通过ODBC连接到Informix

谢谢

更新代码示例:

抱歉花了这么长时间,工作一直很忙!下面是MS SQL(2008)服务器的一个示例,它应该简单地查询参数值为1或0的sys.all_对象(systables?)——但是在这个示例中,由于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 });
            }
        }
}
使用简洁;
使用DapperSQL;
使用System.Collections.Generic;
使用系统数据;
使用System.Data.Odbc;
命名空间DapperTests
{
公共类SQLEx
{
专用OdbcConnection GetConnection()
{
var cnn=新的OdbcConnection(“DSN=ODBCSOURCE”);
cnn.Open();
//使用跟踪计时的分析连接包装连接
返回cnn;
}
公共IEnumerable DapperTest()
{
使用(OdbcConnection conn=GetConnection())
{
返回conn.Query(“SELECT*FROM sys.all_objects where is_ms_shipped=?”,new{is_ms_shipped=1});
}
}
}

我知道这是一篇老文章,只需使用SP而不是query,请检查此链接,此链接使用sybase odbc SP,所有odbc都使用相同的技术,我希望它在Informix中工作。

从内存来看,odbc/ifx有很多“问题”使用命名参数。如图所示的查询应能在任何正常的、名称感知的命令中工作。所示的命令与实际代码有多接近?所示的代码是否存在此问题?我刚刚尝试了上面的代码,以确保它以最简单的形式工作-但仍然没有成功:(您能否将直接针对odbc连接工作的原始代码示例添加到Marc的注释中,根据我的经验,使用odbc查询Informix DB可能会令人沮丧。要了解odbc实际将查询发送到数据库进行评估的确切格式,我过去使用数据包嗅探器取得了相当大的成功例如Wireshark和检查TCP/IP数据包中的原始数据。
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 });
            }
        }
}