SELECT * from X WHERE id OR(...)Dapper ORMで

.net dapper sql

質問

IN節の値のリストがビジネスロジックから来たときに、Dapper ORMを使用してIN節でクエリを書く最良の方法は何ですか?たとえば、私はクエリを持っているとしましょう:

SELECT * 
  FROM SomeTable 
 WHERE id IN (commaSeparatedListOfIDs)

commaSeparatedListOfIDsはビジネスロジックから渡され、どのタイプのIEnumerable(of Integer)でもcommaSeparatedListOfIDsません。この場合、どのようにクエリを作成すればよいでしょうか?基本的には文字列の連結であるか、私が気づいていない高度なパラメータマッピングテクニックがありますか?

受け入れられた回答

Dapperはこれを直接サポートしています。例えば...

string sql = "SELECT * FROM SomeTable WHERE id IN @ids"
var results = conn.Query(sql, new { ids = new[] { 1, 2, 3, 4, 5 }});

人気のある回答

GitHubプロジェクトのホームページから直接:

Dapperを使用すると、IEnumerableを渡すことができ、クエリを自動的にパラメータ化します。

connection.Query<int>(
    @"select * 
      from (select 1 as Id union all select 2 union all select 3) as X 
      where Id in @Ids", 
    new { Ids = new int[] { 1, 2, 3 });

翻訳される:

select * 
from (select 1 as Id union all select 2 union all select 3) as X 
where Id in (@Ids1, @Ids2, @Ids3)

// @Ids1 = 1 , @Ids2 = 2 , @Ids2 = 3


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ