2
Dapper를 처음 접했을 때 둘 이상의 속성이있는 컬렉션에 대해 SQL 쿼리에 필터 매개 변수를 전달하는 명확한 방법을 찾으려고합니다.여러 속성이있는 컬렉션을 사용하여 Dapper를 필터링하는 방법은 무엇입니까?
는 내 컬렉션은 다음과 같습니다과 같은 SQL 쿼리보고 뭔가 발생한다
[{
Prop1: 'A Value 1',
Prop2: 'B Value 1'
},
{
Prop1: 'A Value 2',
Prop2: 'B Value 2'
}]
:
select *
from SampleTable
where
([ColumnA]='A Value 1' and [ColumnB]='B Value 1')
or ([ColumnA]='A Value 2' and [ColumnB]='B Value 2')
참고 : 작동하지 않습니다 아래 뭐죠 비슷해 두 속성 때문에 PropA와 PropB는 함께 필터링해야합니다.
string query = @"select *
from SampleTable
where [ColumnA] in (@PropA_Value)
and [ColumnB] in (@PropB_Value)"
con.Query<T>(query, new{PropA_Value = PropA,PropB_Value = PropB}).AsList();
덕분에 나는이 생각을 정말 도움이됩니다. Dapper의 솔루션은 아니지만 재사용이 가능하고 좋은 솔루션입니다. 이 솔루션을 염두에 두어야 할 또 다른 사항은 매개 변수를 전달하는 기본 Dapper 메서드를 사용하지 않기 때문에 SQL 삽입을 확인하는 것입니다. – m0g
그래, 내 솔루션은 단지 SQL 주입과 같은 다른 특권을 고려하지 않고 필터 문자열을 구성하는 방법을 보여줍니다. – Yared
이 링크는 도움이 될 수도 있습니다. https://github.com/tmsmith/Dapper-Extensions/wiki/Predicates '복합 복합어 (조건부 그룹)'섹션을 참조하십시오. – Yared