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
과에이 목록을 변환 할 수 있습니다 알고있는 목록에서 매개 변수 값을 변환하지 못했습니다 저장 프로 시저에서 전달하지만 시간이 오래 걸리는 것처럼 보입니다. :(
포스트'CDDAC.MakeDbParameter'에 대한 코드 및 오류의 스택 추적. – Keith
[테이블 값 매개 변수가있는 저장 프로 시저를 호출하는 방법에 대한 TechNet 설명서] (http://msdn.microsoft.com/en-us/library/bb675163.aspx)를 보면, 세 가지 선택 :'DataTable','IDataReader' 또는'IEnumerable'- 세 가지 옵션 중 하나를 제공해야합니다. * - 선택하십시오. –
@Keith, CDDAC.MakeDBParameter는 우리 프로젝트에 대한 일반적인 유틸리티입니다. 그것의 단지 simlply SP에 대한 매개 변수를 확인하십시오. –