2009-08-26 10 views
1

Dies ist nur zum Debuggen Zweck. Wir haben eine missbraucht gespeicherte Proc, die für immer zurück zu Ergebnismenge dauert. Optimierung der Prozess ist in diesem Moment außer Frage. Ist es mir möglich, geladenes Dataset-Ergebnis irgendwo zu speichern, so muss ich den gespeicherten proc nicht immer wieder aufrufen. Und ich könnte einfach weiter meinen .net-Code testen. Ich möchte es nicht im Speicher zwischenspeichern, sondern lokal in einer Datei speichern.vs2005 C# .net 2.0: kann ich Datentabelle Ergebnis einige speichern wo

DataSet ds = db.ExecuteDataSet(cmdobject); 
//Store this result some where 
//so next time I dont have to call the above method. Just pick up the stored result //from some where and continue with my testing. 

Jedes Codebeispiel würde helfen.

Antwort

1

kann ich sehen, die Details Ihrer gespeicherten proc nicht, aber ich es empfehlen, Modifizieren ein neues Ergebnistabelle zu erstellen.

vis: (basturdized sql)

INSERT INTO CachedTable (SELECT /* whatever the stored proc did */); 
6

Nun DataSet implementiert die ISerializable interface, so können Sie serialize it to a file.

Beispiel:

DataSet ds = new DataSet(); 
    if (File.Exists("SavedDataSet.dat")) 
    { 
    // If the serialized object exists, read it from the file 
    // and deserialize it 
    DataSet ds; 
    Stream stream = File.Open("SavedDataSet.dat", FileMode.Open); 
    BinaryFormatter bFormatter = new BinaryFormatter(); 
    ds = (DataSet)bFormatter.Deserialize(stream); 
    stream.Close(); 
    } 
    else 
    { 
    // If the serialized object doesn't exist, run the stored 
    // procedure and then serialize the result  
    ds = db.ExecuteDataSet(cmdobject); 
    Stream stream = File.Open("SavedDataSet.dat", FileMode.Create); 
    BinaryFormatter bFormatter = new BinaryFormatter(); 
    bFormatter.Serialize(stream, ds); 
    stream.Close(); 
    } 
+0

dies ist schneller als xml aber schwerer zu lesen/mess mit. Welches ist am besten hängt von Ihren Bedürfnissen ab, aber beide sind vollkommen akzeptabel – ShuggyCoUk

7

DataSet.WriteXml()?

MSDN link

+1

nicht vergessen 'DataSet.ReadXml()' :) – STW

+0

Ich implementiere diese Lösung und es funktioniert, außer alle meine Datentypen in Daten Zeile sind jetzt Zeichenfolge im Gegensatz zu ursprünglichen Datentypen im Datenobjekt. Vor ... Zeile ["CustID"] war Integer Jetzt .. nach dem Lesen von XML-Datei Zeile ["CustID"] ist Zeichenfolge. Sie sind alle Zeichenfolgen. Gibt es eine Möglichkeit, das zu beheben? –

+0

Ich habe die Writexml-Methode nicht wirklich verwendet, also gaurantetes hier, aber haben Sie versucht, den XMLWritemode mit DataSet.WriteXml (String, XmlWriteMode) an wrikschema zu setzen und das gleiche für das Schema zu tun? Siehe den obigen Link für die Methodendefinitionen. – gmn

Verwandte Themen