Impossible de sérialiser l'objet DataTable. DataTable nom n'est pas défini

J'ai besoin d'exporter toutes les tables de données individuelles des fichiers XML et je ne peut pas exporter toutes les lignes à la fois en raison de Système.OutOfMemoryException si il y a une immense table. J'ai donc essayé d'exporter les N lignes. Cependant WriteXml déclenche une exception si j'utilise la pagination de syntaxe dans la requête.

J'ai testé les deux requêtes en LINQPad, ils sont ok.

Système.InvalidOperationException: Impossible de sérialiser l'objet DataTable.
DataTable nom n'est pas défini.

  //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);  

Quel est le problème ici, ou comment puis-je résoudre ce problème?

Si vous mettez un point d'arrêt dans la ligne dataTable.Charge(oraReaderTableData); pouvez-vous voir si les données ont été correctement chargé dans la dataTable?
Oui, il existe des lignes.
Avez-vous essayé de mettre une valeur à la propriété TableName de dataTable après le chargement du lecteur?
L'ajout de dataTable.TableName = "test"; a résolu le problème.

OriginalL'auteur Nime Cloud | 2016-02-10