SQL 쿼리에 대한 매개 변수 설정에 대한 혼란

c# dapper orm sql sql-server

문제

Dapper ORM을 사용하여 데이터베이스를 쿼리합니다. 쿼리 구문에 익숙해졌지만 매개 변수에 문제가 있습니다.

다음은 작동하는 쿼리입니다.

orders = ctx.Query<OrderView>(myQuery, new { Seller = 104386, StatusID = 2, query = "people"});

이것은 myQuery (@Seller, @StatusID, @query)의 매개 변수를이 값으로 매핑하므로 올바르게 작동합니다.

그러나, 내 프로그램에서 즉시 매개 변수를 생성하고 List<ObjectParameter> 에 저장하므로 각 매개 변수에는 이름과 값이 있습니다. 그러나이 질문에 올바르게 작동하도록 가져올 수 없습니다. 다음은 작동하지 않는 예입니다.

orders = ctx.Query<OrderView>(myQuery, parameters.toArray());

나는 또한 그것을 List<SqlParameter> 로 변환하려고했지만 그것도 작동하지 않는다. 누구든지 내 매개 변수 목록 작업 쿼리를 복제 할 수있는 방법을 알고 있습니까?

수락 된 답변

ObjectParameter 는 EF ( System.Data.Entity.dll )이며 dapper에서는 사용되지 않습니다. 당신은 Dapper 어셈블리 / 네임 스페이스 안에 DynamicParameters 원한다.

var args = new DynamicParameters();
...
args.Add(name, value); // there are more complex usages, note
...
connection.Query<OrderView>(myQuery, args);

ObjectParameter실제로 사용하고자하는 경우와 같이 더 많은 제어권을 원한다면 SqlMapper.IDynamicParameters 를 구현하는 자체 유형을 작성하고이를 SqlMapper.IDynamicParameters 로 전달하십시오.



아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow
아래 라이선스: CC-BY-SA with attribution
와 제휴하지 않음 Stack Overflow