2016-10-05 4 views
2

asp.net 코어에서 SQLClient를 사용하려고 시도하면 데이터베이스의 I/O에 사용되는 DataTables 및 DataSets 테이블 구조가 없음을 알았을 수 있습니다.asp.net 코어의 Datatable 클래스

출력 데이터에는 SqlDataReader 옵션이 있습니다. 그러나 입력 데이터의 경우 아직이 문제에 대한 해결책을 찾고 있습니다 (예 : 프레임 워크 461에서 매개 변수로 SP에 테이블을 전달하려면 'SqlDbType = SqlDbType.Structured and DataTable class'를 사용합니다. 아이디어가 있으십니까? https://github.com/XML-Travelgate/xtg-data-sqlclient

+0

확실하지 어떻게 내가 사용

도서관 .NET 코어에는 적용되지만 [_ "System.Data.SqlClient는 DataTable, DbDataReader 또는 IEnumerable 개체에서 테이블 반환 매개 변수를 채우는 것을 지원합니다."_] (https://msdn.microsoft.com/en-us/) library/bb675163 (v = vs.110) .aspx) 또는 다음 위치에 사용자 정의 유형을 만들 수 있습니다. 'CREATE TYPE dbo.xxx AS TABLE'을 가진 서버 – stuartd

+0

.net 코어는 이러한 객체 유형을 사용할 수 없으며 asp.net 코어에 대한 대안이 필요합니다. 귀하의 답변에 감사드립니다. –

+0

[.net-core 관련 문제] (https://github.com/dotnet/corefx/issues/8622)에 따르면 일부는 사용 가능하며 [이 메모] (https://github.com)를 참조하십시오./dotnet/corefx/issues/8622 # issuecomment-223673368) 그리고 [this one] (https://github.com/dotnet/corefx/issues/8622#issuecomment-223980960) – stuartd

답변

5

솔루션 :

 List<SqlDataRecord> datatable = new List<SqlDataRecord>(); 
     SqlMetaData[] sqlMetaData = new SqlMetaData[2]; 
     sqlMetaData[0] = new SqlMetaData("id", SqlDbType.Int); 
     sqlMetaData[1] = new SqlMetaData("name", SqlDbType.VarChar, 50); 
     SqlDataRecord row = new SqlDataRecord(sqlMetaData); 
     row.SetValues(new object[] { 1, "John" }); 
     datatable.Add(row); 
     row = new SqlDataRecord(sqlMetaData); 
     row.SetValues(new object[] { 2, "Peter" }); 
     datatable.Add(row); 

     var task = dbBase.ExecProcedureDataTableWithParamsAsync<object>("VIEWTABLE", new List<SqlParameter>() 
      { 
       new SqlParameter() 
       { 
        ParameterName = "@paramtable", 
        SqlDbType = SqlDbType.Structured, 
        Direction = ParameterDirection.Input, 
        Value = datatable 
       } 
      }); 
0

DataTable을, 데이터 집합 등 지금 .NET 코어 2.0 및 Visual Studio 2017를 사용하여 구현 될 수있다 미리 15.3 +