DataTable을 직렬화할 수 없습니다.DataTable 이름이 설정되지 않았습니다.
모든 데이터 테이블을 개별 XML 파일로 내보내야 하는데 시스템 때문에 모든 행을 한 번에 내보낼 수 없습니다.OutOf Memory큰 테이블이 있는 경우는 예외입니다.그래서 N개의 행을 수출하려고 했습니다.그러나 WriteXml은 쿼리에서 페이징 구문을 사용할 경우 예외를 발생시킵니다.
저는 LINQPad에서 두 가지 쿼리를 모두 테스트해 보았는데, 괜찮습니다.
System.잘못된 작동예외: DataTable을 직렬화할 수 없습니다.DataTable 이름이 설정되지 않았습니다.
// The first query causes exception
string oraQueryGetTableData = "SELECT * FROM (SELECT t0.* FROM MY_TABLE t0) WHERE ROWNUM <= 100";
// The second query runs without any error
//oraQueryGetTableData = "SELECT * FROM MY_TABLE";
OracleCommand oraCommandGetTableData = new OracleCommand(oraQueryGetTableData, oraConnection);
OracleDataReader oraReaderTableData = oraCommandGetTableData.ExecuteReader();
DataTable dataTable = new DataTable();
dataTable.Load(oraReaderTableData);
// Exception might occur here
dataTable.WriteXml(writer, true);
여기서 무슨 문제가 있거나 어떻게 해결해야 합니까?
예외에서 알 수 있듯이 테이블에는 해당 테이블이 없습니다.TableName
재산권 설정설정만 해주시면 됩니다.
DataTable dataTable = new DataTable { TableName = "MyTableName"};
dataTable.Load(oraReaderTableData);
....
사용하는 경우Newtonsoft
JSON 문자열 데이터를 역직렬화하는 방법DataTable
,그TableName
속성이 설정되지 않습니다.샘플 코드를 구성하고 중단점을 다음에 넣었습니다.dt
당신에게 무엇이 무엇인지를 알려주는 과제dt.TableName
. 디버깅 결과는 다음과 같습니다.
그래서, 만약 당신이 돌려주고 싶다면,DataTable
웹 서비스 방법의 결과로서,TableName
다음에 속성 할당이 필요합니다.DeserializeObject
. 코드를 다음으로 변경합니다.
DataTable dt = JsonConvert.DeserializeObject<DataTable>(
@"[
{ col1: 'value1', col2: 'value2' },
{ col1: 'value3', col2: 'value4' },
{ col1: 'value5', col2: 'value6' },
]");
dt.TableName = "TableName";
그리고 다시 디버그합니다.이것이 더 바람직합니다.DataTable
웹 방식으로 반환할 수 있습니다.
언급URL : https://stackoverflow.com/questions/35314515/cannot-serialize-the-datatable-datatable-name-is-not-set
'programing' 카테고리의 다른 글
ajax를 사용하여 로드 데이터 2개를 선택하면 옵션을 선택할 수 없습니다. (0) | 2023.10.22 |
---|---|
외국 열쇠가 왜 이래요? (0) | 2023.10.22 |
윈도우즈에서 서명되지 않은 __int64의 printf 형식 (0) | 2023.10.22 |
WordPress 내에 응답 테이블을 만듭니다. (0) | 2023.10.22 |
자바스크립트에 유니코드 문자 삽입 (0) | 2023.10.22 |