2009-03-03 6 views
1

Ich muss Werte in ähnlichen Tabellen aus zwei verschiedenen Datenbanken ziehen, kombinieren und dann die Ausgabe in eine CSV-Datei schreiben. Kann ich einfach eine zweite Verbindungszeichenfolge in der Eigenschaftendatei erstellen und dem DataContext die zweite Verbindungszeichenfolge für die andere LINQ-Abfrage explizit übergeben? Oder muss ich etwas anderes machen? Die Tabellen sind fast identisch mit Ausnahme einer ID, die für einige Kriterien verwendet wird.Wie kann ich zwei Datenbanken abfragen und die Ergebnisse mit LINQ kombinieren?

Ich habe noch nie zuvor LINQ verwendet, aber es scheint der einfachste Weg zu sein, dieses Problem zu lösen, SQL manuell schreiben zu müssen.

Antwort

1

Wenn das Schema mit beiden Datenbanken übereinstimmt, sollten Sie in der Lage sein, eine zweite DataContext-Instanz zu erstellen (indem Sie die zweite Verbindungszeichenfolge als Argument angeben). LINQ to SQL prüft in keiner Weise, ob Sie die "richtige" Datenbank verwenden - wenn die richtigen Spalten & Tabellen haben, wird es funktionieren.

LINQ funktioniert jedoch nicht automatisch mit mehreren Datenbanken auf "intelligente" Weise. Daher muss der Inhalt in den Speicher heruntergeladen werden, bevor Operationen mit mehreren Datenquellen ausgeführt werden. Sie können dazu immer noch eine einzelne LINQ-Abfrage verwenden. Sie müssen jedoch darauf achten, welcher Teil davon in Speicherdaten ausgeführt wird. (Übrigens können Sie mit Erweiterungsmethoden wie "ToList" explizit sagen - holen Sie sich die Daten aus der Datenbank an dieser Stelle).

Sie erwähnen auch, dass die Tabellen fast identisch sind mit Ausnahme einer ID in einigen Fällen - bedeutet das, dass Primär/Fremdschlüssel anders sind? In diesem Fall funktionieren einige automatisch generierte Beziehungen möglicherweise nicht. Wenn dies bedeutet, dass ein anderer Spaltenname vorhanden ist, können Sie das generierte Schema manuell so bearbeiten, dass es beide Spalten enthält, und dann nur das richtige verwenden. Dies ist jedoch etwas merkwürdig - es sei denn, Sie planen einige manuelle Änderungen am Schema, Sie könnten auch nur zwei sehr ähnliche Schemas generieren.

Verwandte Themen