Entity Framework의 저장 프로시저에 테이블 반환 매개변수 전달
Entity Framework 자체는 기본적으로 테이블 반환 매개변수를 저장 프로시저에 직접 전달하는 것을 지원하지 않습니다. 그러나 이는 ObjectContext
과 함께 ExecuteStoreQuery
명령을 사용하여 수행할 수 있습니다.
만능창고방식 창조
먼저 일반적인 창고 보관 방법을 정의합니다.
<code class="language-csharp">public IEnumerable<T> ExecuteStoredProcedure<T>(string procedureName, params object[] parameters) { // 构建命令字符串 StringBuilder command = new StringBuilder(); command.Append("EXEC "); command.Append(procedureName); command.Append(" "); // 添加参数占位符 for (int i = 0; i < parameters.Length; i++) { if (i > 0) command.Append(","); command.Append("{" + i + "}"); } // 执行查询 return this.context.ExecuteStoreQuery<T>(command.ToString(), parameters); }</code>
테이블 반환 매개변수와 함께 ExecuteStoreQuery 사용
테이블 반환 매개 변수와 함께 ExecuteStoreQuery
을 사용하는 경우 SqlParameter
의 SqlDbType
속성을 Structured
로 설정하고 TypeName
속성을 사용자 정의 유형의 이름으로 설정합니다.
<code class="language-csharp">var warnings = new SqlParameter("warnings", SqlDbType.Structured); warnings.Value = dt; warnings.TypeName = "dbo.udt_Warnings";</code>
저장 프로시저에 매개변수 전달
ExecuteStoredProcedure
메소드에서 매개변수가 올바른 순서로 전달되었는지 확인하세요.
<code class="language-csharp">entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
DbContext 및 ObjectContext
Entity Framework Code First의 경우 DbContext
메서드를 사용하려면 ObjectContext
을 ExecuteStoreQuery
으로 변환해야 합니다.
<code class="language-csharp">var entities = (ObjectContext)context; entities.ExecuteStoredProcedure("usp_RaiseWarnings_rs", userId, warnings, caseId);</code>
추가 참고사항
ExecuteStoreCommand
에 전달된 매개변수는 저장 프로시저의 순서와 동일해야 합니다. 위 내용은 Entity Framework의 저장 프로시저에 테이블 반환 매개 변수를 전달하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!