良い例が見つからないようですが、このようなクエリを実行する最良の方法は何ですか
tbl.Query(SELECT * FROM PRODUCTS WHERE ProductId IN (@Ids)", idlist)
Dapper ORM は、リストに入力するだけで、何をすべきかがわかります。Massive でこれを行うことはできますか、それとも @0、@1、@2 などのパラメーターを構築して、リストを配列 idList.ToArray() に変換する必要がありますか?
良い例が見つからないようですが、このようなクエリを実行する最良の方法は何ですか
tbl.Query(SELECT * FROM PRODUCTS WHERE ProductId IN (@Ids)", idlist)
Dapper ORM は、リストに入力するだけで、何をすべきかがわかります。Massive でこれを行うことはできますか、それとも @0、@1、@2 などのパラメーターを構築して、リストを配列 idList.ToArray() に変換する必要がありますか?
これは可能ではないようです。私が試したとき(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());