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.
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
Vous devez vous connecter pour publier un commentaire.
Comme l'exception, dit - la table n'a pas de
TableName
ensemble de propriétés. Vous avez juste besoin de la définir.OriginalL'auteur Jens Meinecke
Si vous utilisez
Newtonsoft
pour Désérialiser les chaînes de données JSON àDataTable
, leTableName
attribut PAS être ensemble. J'ai composé le code d'exemple et de mettre le point de rupture après ladt
cession pour vous permettre de voir ce qui estdt.TableName
. Le débogage de résultat est présentée ci-dessous:Donc, si vous voulez retourner la
DataTable
comme un résultat de la méthode de service web, leTableName
affectation d'attribut est nécessaire aprèsDeserializeObject
. J'ai modifier le code pour être:Et je debug de nouveau. C'est Le préférable
DataTable
qui peut être retournée par une méthode web.OriginalL'auteur Pranithan T.