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)Server的示例,该示例应该简单查询参数值为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 });
}
}
}
从内存来看,ODBC/ifx在命名参数上有很多“问题”。显示的查询*应该*在任何理智的名称感知命令中工作。显示给* actual *代码的命令有多近?显示的代码是否存在这个问题? –
我刚刚尝试了上面的代码,以确保它能够以最简单的形式工作 - 并且仍然没有运气:( –
可以包含直接针对odbc连接的示例原始代码 –