2014-06-05 2 views
3

DbParameter으로 클래스 목록을 전달하려고합니다. 아마도 테이블 형식이 내 저장 프로 시저에 정의되어있을 것입니다.Sql 테이블 형식으로 매개 변수를 전달하십시오. 매개 변수

이제 Tables을 허용하는 테이블 형식이 정의되어 있으므로 List<>을 저장 프로 시저에 전달하는 방법이 없습니다.

여기에 제 방법이 있습니다. 이 같은

public static AddCustomer(List<Customer> customer) 
{ 
     List<DbParameter> lstDbParameters = null; 

     try 
     { 
     #region Set the Parameters 
     lstDbParameters = new List<DbParameter>(); 
     SqlParameter dbAcceptedBillDetails = new SqlParameter("@Customers", 
                  customer); 

     dbAcceptedBillDetails.SqlDbType = SqlDbType.Structured; 
     lstDbParameters.Add(dbAcceptedBillDetails as DbParameter); 
     lstDbParameters.Add(CDDAC.MakeDbParameter(dbProvider, 
                "@ErrorMessage", 
                DbType.String, 
                null, 
                500, 
                ParameterDirection.Output)); 
     #endregion 

     //Call the static ExecuteNonQuery method. 
     CDDAC.ExecuteNonQuery(dbProvider, 
           connectionString, 
           "AddCustomer", 
           CommandType.StoredProcedure, 
           lstDbParameters.ToArray()); 
     } 
     catch (Exception ex) 
     { 
     throw; 
     } 
    } 

내가지고있어 오류 :

1 to a IEnumerable 1.

나는 내가 다음 DataTable과에이 목록을 변환 할 수 있습니다 알고있는 목록에서 매개 변수 값을 변환하지 못했습니다 저장 프로 시저에서 전달하지만 시간이 오래 걸리는 것처럼 보입니다. :(

+0

포스트'CDDAC.MakeDbParameter'에 대한 코드 및 오류의 스택 추적. – Keith

+2

[테이블 값 매개 변수가있는 저장 프로 시저를 호출하는 방법에 대한 TechNet 설명서] (http://msdn.microsoft.com/en-us/library/bb675163.aspx)를 보면, 세 가지 선택 :'DataTable','IDataReader' 또는'IEnumerable '- 세 가지 옵션 중 하나를 제공해야합니다. * - 선택하십시오. –

+0

@Keith, CDDAC.MakeDBParameter는 우리 프로젝트에 대한 일반적인 유틸리티입니다. 그것의 단지 simlply SP에 대한 매개 변수를 확인하십시오. –

답변

관련 문제