パラメータを追加しないDapper

dapper informix odbc sql

質問

私は複雑なクエリに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はクエリにパラメータを追加しているようには見えないため、構文エラーが発生しています。

InformixにODBC経由で接続しています。

ありがとう

コードサンプルの更新:

申し訳ありませんが、それは非常に長い時間がかかった、仕事で非常に忙しかった!以下は、sys.all_objects(systables?)をparam値1または0で単純にクエリするMS SQL(2008)Serverのサンプルですが、このサンプルではODBCは名前付きparamsを使用しないため、これは機能しません。

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を入力してください。sybase odbc Spを使用して入力パームを作成します



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow