War diese Seite hilfreich?
Ihr Feedback ist uns wichtig. Teilen Sie uns Ihre Meinung mit.
Weiteres Feedback?
1500 verbleibende Zeichen
Exportieren (0) Drucken
Alle erweitern
Dieser Artikel wurde maschinell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

DataTable.Merge-Methode (DataTable)

Führen Sie die angegebene DataTable mit der aktuellen DataTable zusammen.

Namespace:  System.Data
Assembly:  System.Data (in System.Data.dll)

public void Merge(
	DataTable table
)

Parameter

table
Typ: System.Data.DataTable
Die DataTable, die mit der aktuellen DataTable zusammengeführt werden soll.

Mit der Merge-Methode werden zwei DataTable-Objekte zusammengeführt, deren Schemas weitgehend ähnlich sind. Eine Zusammenführung wird i. d. R. in einer Clientanwendung verwendet, um die neuesten Änderungen aus einer Datenquelle in ein vorhandenes DataTable einzubinden. Somit verfügt die Clientanwendung über ein aktualisiertes DataTable mit den neuesten Daten aus der Datenquelle.

Beim Zusammenführen wird nur die ursprüngliche Tabelle berücksichtigt und die Tabelle, mit der sie zusammengeführt werden soll. Untergeordnete Tabellen sind davon nicht betroffen und werden nicht eingeschlossen. Wenn eine Tabelle mindestens eine untergeordnete Tabelle enthält, die als Teil einer Beziehung definiert ist, müssen die untergeordneten Tabellen einzeln zusammengeführt werden.

Die Merge -Methode wird i. d. R. am Ende einer Reihe von Prozeduren aufgerufen, bei denen Änderungen validiert, Fehler abgeglichen werden und die Datenquelle mit den Änderungen sowie schließlich das vorhandene DataTable aktualisiert wird.

Beim Zusammenführen werden die Änderungen, die vor der Zusammenführung an den vorhandenen Daten vorgenommen wurden, während der Zusammenführung standardmäßig beibehalten. Entwickler können dieses Verhalten so ändern, dass eine der anderen beiden Überladungen für diese Methode aufgerufen wird. Außerdem können sie einen False-Wert für den preserveChanges-Parameter festlegen.

In einer Clientanwendung muss der Benutzer im Allgemeinen nur auf eine einzige Schaltfläche klicken, um die geänderten Daten zu erfassen und zu validieren, bevor sie zurück an eine Komponente der mittleren Ebene gesendet werden. In diesem Szenario wird die GetChanges-Methode zuerst aufgerufen. Diese Methode gibt ein zweites DataTable zurück, das für das Validieren und Zusammenführen optimiert ist. Dieses zweite DataTable-Objekt enthält nur die geänderten DataRow-Objekte. Es bildet daher eine Teilmenge der ursprünglichen DataTable. Diese Teilmenge ist i. d. R. kleiner und wird daher effizienter an eine Komponente der mittleren Ebene zurückgegeben. Die Komponente der mittleren Ebene aktualisiert anschließend mithilfe gespeicherter Prozeduren die ursprüngliche Datenquelle mit den Änderungen. Die mittlere Ebene kann dann entweder durch erneutes Ausführen der ursprünglichen Abfrage ein neues DataTable mit den ursprünglichen und den neuesten Daten aus der Datenquelle zurücksenden, oder sie kann die Teilmenge mit allen an ihr vorgenommenen Änderungen aus der Datenquelle zurücksenden. (Wenn die Datenquelle z. B. automatisch eindeutige Primärschlüsselwerte erstellt, können diese Werte an die Clientanwendung zurückgegeben werden.) In jedem Fall kann das zurückgegebene DataTable mithilfe der Merge-Methode wieder mit dem ursprünglichen DataTable der Anwendung zusammengeführt werden.

Beim Zusammenführen einer neuen Quell-DataTable mit dem Ziel werden Quellzeilen mit dem DataRowState-Wert Unchanged, Modified oder Deleted mit den Zielzeilen zusammengeführt, die dieselben Primärschlüsselwerte enthalten. Quellzeilen mit dem DataRowState-Wert Added werden neuen Zielzeilen zugeordnet, die dieselben Primärschlüsselwerte wie die neuen Quellzeilen aufweisen.

Die folgende Konsolenanwendung erstellt eine einfache DataTable und fügt Daten der Tabelle hinzu. Im Beispiel wird dann eine Kopie der Tabelle erstellt und der Kopie werden Zeilen hinzugefügt. Letztendlich ruft das Beispiel die Merge-Methode auf, um die Daten in der zweiten Tabelle mit den Daten in der ersten Tabelle zusammenzuführen.


private static void DemonstrateMergeTable()
{
    DataTable table1 = new DataTable("Items");

    // Add columns
    DataColumn column1 = new DataColumn("id", typeof(System.Int32));
    DataColumn column2 = new DataColumn("item", typeof(System.Int32));
    table1.Columns.Add(column1);
    table1.Columns.Add(column2);

    // Set the primary key column.
    table1.PrimaryKey = new DataColumn[] { column1 };

    // Add RowChanged event handler for the table.
    table1.RowChanged += 
        new System.Data.DataRowChangeEventHandler(Row_Changed);

    // Add some rows.
    DataRow row;
    for (int i = 0; i <= 3; i++)
    {
        row = table1.NewRow();
        row["id"] = i;
        row["item"] = i;
        table1.Rows.Add(row);
    }

    // Accept changes.
    table1.AcceptChanges();
    PrintValues(table1, "Original values");

    // Create a second DataTable identical to the first.
    DataTable table2 = table1.Clone();

    // Add three rows. Note that the id column can't be the 
    // same as existing rows in the original table.
    row = table2.NewRow();
    row["id"] = 14;
    row["item"] = 774;
    table2.Rows.Add(row);

    row = table2.NewRow();
    row["id"] = 12;
    row["item"] = 555;
    table2.Rows.Add(row);

    row = table2.NewRow();
    row["id"] = 13;
    row["item"] = 665;
    table2.Rows.Add(row);

    // Merge table2 into the table1.
    Console.WriteLine("Merging");
    table1.Merge(table2);
    PrintValues(table1, "Merged With table1");

}

private static void Row_Changed(object sender, 
    DataRowChangeEventArgs e)
{
    Console.WriteLine("Row changed {0}\t{1}", 
        e.Action, e.Row.ItemArray[0]);
}

private static void PrintValues(DataTable table, string label)
{
    // Display the values in the supplied DataTable:
    Console.WriteLine(label);
    foreach (DataRow row in table.Rows)
    {
        foreach (DataColumn col in table.Columns)
        {
            Console.Write("\t " + row[col].ToString());
        }
        Console.WriteLine();
    }
}


.NET Framework

Unterstützt in: 4.5.2, 4.5.1, 4.5, 4, 3.5, 3.0, 2.0

.NET Framework Client Profile

Unterstützt in: 4, 3.5 SP1

Windows Phone 8.1, Windows Phone 8, Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core-Rolle wird nicht unterstützt), Windows Server 2008 R2 (Server Core-Rolle wird mit SP1 oder höher unterstützt; Itanium wird nicht unterstützt)

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen für .NET Framework.

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2015 Microsoft