Dapper로 T-SQL 저장 프로 시저를 호출 할 때 '@'를 사용해야합니까?

c# dapper stored-procedures tsql

문제

Dapper를 사용하여 저장 프로 시저를 호출하려고합니다. 지금까지 본 모든 코드는 저장 프로 시저 매개 변수를 @ 문자로 지정하여 수행합니다. 이는 간단히 모델 클래스를 정의하여 Dapper의 Query 또는 Execute 메소드로 전달할 수 없다는 것을 의미합니다. 모델 인스턴스를 다시 변환하면 시간과 메모리가 낭비되는 것처럼 보입니다. 이게 내가 정말로해야 할 일이야?

예를 들어, 아래 코드는 모델 인스턴스를 허용합니다. 모델에는 sp_GetUser 테이블의 모든 속성이 있습니다. Dapper는 호출 할 때 저장 프로 시저의 매개 변수에 해당 모델 속성을 전달해야합니다. 이 경우 또는 'param'매개 변수에 전달할 개체를 실제로 정의해야합니까?

    public IList<User> GetUsers(UserSP user)
    {
        using (var cn = new SqlConnection(ConnectionString))
        {
            var users = cn.Query<User>("sp_GetUsers",
                    param: new
                    {
                        @Id = user.Id,
                        @NAme = user.Name,
                        @Age = user.Age
                    },
                    commandType: CommandType.StoredProcedure).ToList();
            return users;
        }
    }

인기 답변

이 같은 것을 시도해보십시오.

클래스

 public class ReportIndex
    {
        public int SlideNumber { get; set; }
        public string ChartName { get; set; }
        public string SheetName { get; set; }
    }

수업을 dapper로 채우다.

public List<ReportIndex> GetReportIndex(int reportId)
    {
        List<ReportIndex> reportIndex = null;

        using (var conn = new SqlConnection(connString))
        {
            conn.Open();

            var p = new DynamicParameters();
            p.Add("@ReportId", reportId);

            reportIndex = conn.Query<ReportIndex>("sp_ReportGetReportIndex",
                                        p,
                                        commandType: CommandType.StoredProcedure).ToList();
        }

        return reportIndex;
    }


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