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連接的示例原始代碼 –