3

我正在尝试将 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) 服务器的示例,它应该使用参数值 1 或 0 简单地查询 sys.all_objects (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 });
            }
        }
}
4

1 回答 1

0

I know this is old post, just use SP instead of query, please check this link Dapper using ODBC store procedure Input parm, this using sybase odbc Sp, all odbc use same technique, I wish it works in Informix.

于 2015-07-20T07:31:54.883 回答