11

나는 Entity Framework 4.1 코드 우선을 사용합니다. 출력 매개 변수가있는 저장 프로 시저를 호출하고 강력한 형식의 결과 집합 외에도 해당 출력 매개 변수의 값을 검색하려고합니다. 이것과 같은 서명을 가진 검색 기능EF4.1 코드 우선 : 출력 매개 변수가있는 저장 프로 시저

public IEnumerable<MyType> Search(int maxRows, out int totalRows, string searchTerm) { ... } 

"함수 가져 오기"에 대한 많은 힌트가 있지만 코드 첫 번째와 호환되지 않습니다. Database.SqlQuery (...)를 사용하여 저장 프로 시저를 호출 할 수 있지만 출력 매개 변수에서는 작동하지 않습니다.

EF4.1 코드를 사용하여이 문제를 해결할 수 있습니까?

답변

26

SqlQuery은 출력 매개 변수와 함께 작동하지만 SQL 쿼리를 올바르게 정의하고 SqlParameter을 설정해야합니다. 다음과 같이 시도해보십시오.

var outParam = new SqlParameter(); 
outParam.ParameterName = "TotalRows"; 
outParam.SqlDbType = SqlDbType.Int; 
outParam.ParameterDirection = ParameterDirection.Output; 

var data = dbContext.Database.SqlQuery<MyType>("sp_search @SearchTerm, @MaxRows, @TotalRows OUT", 
       new SqlParameter("SearchTerm", searchTerm), 
       new SqlParameter("MaxRows", maxRows), 
       outParam); 
var result = data.ToList(); 
totalRows = (int)outParam.Value; 
+0

완벽! 누락 된 부분은 쿼리 매개 변수 목록에서 "ParameterDirection.Output"및 "@totalRows"다음에 나오는 "OUT"이었습니다. 감사! –

+0

OUTPUT 매개 변수가 여러 개인 경우에는 작동하지 않는 것 같습니다. 각 값은 null입니다. 여러 OUTPUT 매개 변수를 사용하여이 작업을 수행 할 수 있습니까? –

+0

내 sp 반환 아무것도 .... 그래서 그 경우 .... SqlQuery .... 어떤 suggesions 작동하지 않습니다? –

관련 문제