Dapper 쿼리의 인수를 동적으로 만드는 방법

.net c# dapper

문제

나는 값의 사전을 가지고있다. 예 : "Name": "Alex"

이 쿼리를 쿼리의 인수로 Dapper에 전달할 수 있습니까?

다음은 내가하고 싶은 것을 보여주는 예입니다.

IDictionary<string, string> args = GetArgsFromSomewhere();
string query = "select * from people where Name = @Name";
var stuff = connection.Query<ExtractionRecord>(query, args);

수락 된 답변

예:

var stuff = connection.Query<ExtractionRecord>(query, dbArgs);

args 대신 dbArgs 를 전달 dbArgs .

var stuff = connection.Query<ExtractionRecord>(query, dbArgs);

또는 IDynamicParameters 를 구현하는 고유 한 클래스를 작성할 수 있습니다.

객체에서 시작하는 경우 (dapper로 일반적인 접근법), DynamicParameters 를 시작으로이 템플릿을 사용할 수도 있습니다.

var stuff = connection.Query<ExtractionRecord>(query, dbArgs);

인기 답변

나는 이것이 (5 세의) 오래된 질문이라는 것을 알고 있지만, 나는 똑같은 일로 고심하고 있었다. 완전한 대답은 다른 대답의 주석에 있지만, 나는 여기서 완전한 예를 제시 할 것이라고 생각했다.

    public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
    {
        IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
        return entities;
    }

또는 완전히 동적 인 경우 모델, 쿼리 및 모든 쿼리 매개 변수 집합을 취하는 다음과 같은 메서드를 만들 수 있습니다.

    public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
    {
        IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
        return entities;
    }

그런 다음이 메서드를 호출합니다.

    public static IEnumerable<T> Get<T>(string query, Dictionary<string, object> dictionary)
    {
        IEnumerable<T> entities = connection.Query<T>(query, new DynamicParameters(dictionary));
        return entities;
    }



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
이 KB는 합법적입니까? 예, 이유를 알아보십시오.