2016-10-24 2 views
1

프로젝트에서 sql-server 2012를 사용합니다.EF6을 사용하여 저장 프로 시저에 매개 변수 전달

나는 저장 프로 시저에 저장 프로 시저에 매개 변수를 전달하고 ExecuteSqlCommand이라는 엔티티 프레임 워크 6 메서드를 사용하여 저장 프로 시저를 저장했습니다.

_context.database.ExecuteSqlCommand("SP_GetRecords", here all params) 

저장 프로 시저로 보내려고하는 매개 변수 중 하나는 정수 목록입니다.

저는 advised이었습니다. sql-server에서 테이블 반환 매개 변수를 만들고이를 배열 또는 목록으로 전달했습니다.

그러나 ExecuteSqlCommand 메서드를 사용하여이 목록 또는 정수 배열을 테이블 반환 매개 변수에 전달하는 방법을 모르겠다.

목록 또는 배열 유형을 전달하는 방법에 대한 아이디어가 있으십니까? ExecuteSqlCommand?

답변

4

SqlParameter parameter = new SqlParameter(); 
parameter.ParameterName = "@myData"; 
parameter.SqlDbType = System.Data.SqlDbType.Structured; 
parameter.TypeName = "dbo.YourCustomTableType"; 
parameter.Value = myDataTable;  

평소와 같이

ctx.Database.ExecuteSqlCommand("EXEC SP_GetData @myData", parameter); 
+0

reall입니다!? , 그렇게 간단합니까? myData를 테이블 반환 매개 변수에 전달할 수 있습니까? – Michael

+0

다음 행 : parameter.Value = myDataTable myDataTable의 유형은 무엇입니까? – Michael

+0

DataTable (https://msdn.microsoft.com/en-us/library/system.data.datatable(v=vs.110).aspx) –

2
우리는 NpgsqlParameter를 작성해야합니다

및 설정 parametr의 이름을 실행하고

 var param1 = new NpgsqlParameter("param1", NpgsqlDbType.Array | NpgsqlDbType.Bigint) { Value = Enumerable.Range(0, 10).ToArray()}; 

     var param2 = new NpgsqlParameter("param2", NpgsqlDbType.Bigint){ Value = 1} 

     return DataSet 
      .FromSql("select function_name(@param1, @param2) as \"SomeName\"", parameters: new object[] { param1, param2 }) 
      .FirstAsync(); 
    } 

을 입력하여 매개 변수 만들기 그리고 그 모든

관련 문제