複雑なクエリに 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 に接続しています。
ありがとう
更新コード サンプル:
仕事が忙しくて長くなってすみません!以下は、1 または 0 のパラメーター値で sys.all_objects (systables?) を単純に照会する必要がある MS SQL (2008) サーバーのサンプルですが、このサンプルでは、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 });
}
}
}