0

良い例が見つからないようですが、このようなクエリを実行する最良の方法は何ですか

tbl.Query(SELECT * FROM PRODUCTS WHERE ProductId IN (@Ids)", idlist)

Dapper ORM は、リストに入力するだけで、何をすべきかがわかります。Massive でこれを行うことはできますか、それとも @0、@1、@2 などのパラメーターを構築して、リストを配列 idList.ToArray() に変換する必要がありますか?

4

1 に答える 1

0

これは可能ではないようです。私が試したとき(ids私の場合は配列でした)、エラーが発生しました:

No mapping exists from object type System.Int32[] to a known managed provider native type.

そのため、Massive では、基になる SQL プロバイダーにクエリのパラメーター化を処理させていると思われがちです。そうです、あなたが言ったようにパラメータを構築する必要があります。次のようなことができます。

productTable.Query(string.Format("SELECT * FROM PRODUCTS WHERE ProductId IN ({0})",
    string.Join(",", ids.Select((id, ix) => "@" + ix).ToArray())),
    ids.Cast<object>().ToArray());
于 2012-11-17T12:00:14.107 に答える