我正在尝试使用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 });
}
}
}
我知道这是老帖子,只是使用SP而不是查询,请使用ODBC存储过程检查此链接Dapper输入parm ,这使用sybase odbc Sp,所有odbc使用相同的技术,我希望它在Informix中工作。