Where Criteria의 조합 - 아직 매개 변수화 된 쿼리 - Dapper

c#-4.0 dapper tsql

문제

다음과 같이 Dapper 쿼리가 있습니다.

Public void GetAllCusomers(string CustmoerId, StringFirstName, String LastName, String Gender)
    {
        TblCustomer tblCustomer  = new TblCustomer();

        using (var sqlConnection = new SqlConnection(“DatabaseConncetionString"))
        {
            sqlConnection.Open();
            //tblCustomer = sqlConnection.Query<TblCustomer >("SELECT *  FROM tblCustomer WHERE CustomerId = @CustomerID" AND FirstName = @FirstName……………, new { CustomerID = CustomerId,……………. }).ToList(); 
            tblCustomer = sqlConnection.Query<TblCustomer >("SELECT *  FROM tblCustomer WHERE CustomerId = @CustomerID", new { CustomerID = CustomerId }).ToList();
            sqlConnection.Close();
        }
}

질문은 쿼리를 작성하는 방법입니다. 위의 방법에서 사용자는 쿼리하려는 매개 변수에 값을 제공 할 수 있습니다. WHERE 조건에서 사용되지 않는 매개 변수 값이 비어있는 경우 AND와 operation이있는 where 조건에 제공된 모든 매개 변수를 사용합니다.

Dapper가 없으면 제공된 매개 변수에 따라 SQL 문을 연결하여 동적 쿼리를 작성하기 쉽습니다. 매개 변수가있는 기능을 손상시키지 않고 Dapper에서 이러한 쿼리를 작성하는 방법.

고맙습니다, 가넷

인기 답변

동적 쿼리를 만드는 방법과 비슷하게 할 수 있습니다. 필요한 경우 Where 절의 필터 만 포함하여 문자열을 동적으로 작성하십시오 (사용자 입력에 따라 Where . Exmpale :

var query = new StringBuilder("select * from users where ");

if(!string.IsNullOrEmpty(firstname)) query.Append("FirstName = @FirstName ");

매개 변수를 전달하는 경우 전달할 값이있는 모든 가능한 매개 변수를 포함하는 객체를 만들 수 있습니다.

new {FirstName = "John", LastName = "Doe"}

또는 실제로 사용되는 매개 변수 만 전달하려는 경우 전달해야하는 매개 변수 만 포함하는 Dictionary<string,object> 를 작성할 수 있습니다.

new Dictionary<string,object> { {"FirstName", "John" } }


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