小巧玲珑没有添加参数

时间:2012-09-20 09:31:06

标签: sql odbc informix 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 });
            }
        }
}

1 个答案:

答案 0 :(得分:0)

我知道这是旧帖子,只是使用SP代替查询,请查看此链接Dapper using ODBC store procedure Input parm,这使用sybase odbc Sp,所有odbc使用相同的技术,我希望它在Informix中有效。