Angaben von David Sceppa bezüglich DataViewRow in ADO.NET 2.0 nicht reproduzierbar



  • Hallo zusammen!

    Im Buch von David Sceppa über ADO.NET gibt der Autor einen Hinweis bezüglich Unterschiede im Verhalten von DataRowView zwischen ADO.NET 1.1 und ADO.NET 2.0.

    Folgender Code

    DataTable tbl = new DataTable("MeineTabelle");
    
    // Tabelleneigenschaften festlegen
    tbl.Columns.Add("Spalte1", typeof(string));
    tbl.Columns.Add("Spalte2", typeof(string));
    
    // Daten in Tabelle einfügen
    tbl.Rows.Add(new Object[] { "AAA", "aaaaaa" });
    tbl.Rows.Add(new Object[] { "BBB", "bbbbbb" });
    
    DataView vue = new DataView(tbl);
    
    // aufsteigend sortieren
    vue.Sort = "Spalte2 ASC";
    
    // erste Zeile der DataView auswählen und erste Spalte ausgeben            
    DataRowView row = vue[0];
    Console.WriteLine(row["Spalte1"]);
    
    // absteigen sortieren
    vue.Sort = "Spalte2 DESC";
    
    // vorher gewählte Zeile erneut ausgeben 
    Console.WriteLine(row["Spalte1"]);
    

    Laut Sceppa ist row in ADO.NET 1.1 ein Verweis auf ein DataRow-Objekt, was dazu führt, dass die geänderte Sortierung keine Wirkung auf die Ausgabe hat.

    D.h. in ADO.NET 1.1 würde obiger Code folgende Zeilen ausgeben:
    AAA
    AAA

    In ADO.NET 2.0 soll row hingegen ein Verweis auf einen Eintrag in der DateView sein. Das führt dazu, dass row immer noch auf die erste Zeile der DataView zeigt, welche sich aber durch die Änderung der Sortierung selbst auch geändert hat. Die Ausgabe soll in ADO.NET 2.0 also so lauten:

    AAA
    BBB

    Leider bekomme ich mit Visual Studio 2008 Express diese Behauptung nicht nachvollzogen. Bei mir kommt es immer zur ersten Ausgabe, also zweimal "AAA". Habe es auch schon mit Zielsystem .NET 2.0 versucht.

    Stimmt die Behauptung von Sceppa bzw. was mache ich falsch?

    Vorab schon mal Danke fürs Lesen.


Log in to reply