나는 이것이 오래된 질문 (예 : 5 살)이라는 것을 알고 있지만 같은 문제로 어려움을 겪고있었습니다. 완전한 대답은 다른 대답에 대한 주석에 있지만 여기에 완전한 예를 제공 할 것이라고 생각했습니다.
string query = "SELECT * FROM MyTableName WHERE Foo = @Foo AND Bar = @Bar";
Dictionary<string, object> dictionary = new Dictionary<string, object>();
dictionary.Add("@Foo", "foo");
dictionary.Add("@Bar", "bar");
var results = connection.Query<MyTableName>(query, new DynamicParameters(dictionary));
또는 완전히 동적이되도록 모든 모델, 쿼리 및 쿼리 매개 변수 집합을 사용하는 다음과 같은 메서드를 만들 수 있습니다.
public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
{
IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
return entities;
}
그리고이 메서드를 호출하려면 :
var results = Get<MyTable>(query, dictionary)
나중에 편집
이 답변은 계속해서 찬성 투표를 받으므로 분명히 여전히 필요합니다. 이 솔루션을 사용하여 Dapper 위에 빌드 된 전체 데이터 액세스 NuGet 패키지를 만들었습니다. CRUD 및 쿼리 작업을 한 줄의 코드로 줄입니다.
다음은 NuGet 패키지 입니다.
new DynamicParameters(dictionary)
있으며 잘 작동합니다.