XSD ConnectionString zur Laufzeit für eine Multitenant-App ändern

8

Ich ändere unsere Anwendung von "einem Satz Code & einer Datenbank" zu "einem Satz Code zu mehreren Datenbanken (eine Datenbank pro Kunde)".

Der ursprüngliche Code ist VS2005 ASP.NET (VB) & amp; viele XSDs in einer separaten DLL. Die ConnectionString von web.config überschreibt die zur Laufzeit in der DLL gespeicherte.

Jetzt muss ich den ConnectionString jedes Mal ändern, wenn ich einen Datenadapter / Dataset / Tabelle deklariere, weil der Aufruf möglicherweise vom letzten Aufruf in eine andere Datenbank geht.

Hat jemand Hinweise dazu?

    
DomBat 12.01.2009, 13:48
quelle

2 Antworten

6

Nach ein wenig Nachforschung scheint eine XSD eine Eigenschaft namens ConnectionModifier zu haben.

Um es zu finden, klicken Sie in Ihrem XSD-Diagramm auf den TableAdapter-Teil des Diagramms (in dem die Abfragen definiert sind).

Ändern Sie ConnectionModifier im Eigenschaftenfenster auf Öffentlich und klicken Sie auf Speichern. (Dies scheint auch die Eigenschaft für alle Datensätze auf dieser Seite zu ändern.)

Zurück im Hauptcode Ihrer Site können Sie nun etwas wie folgt machen:

%Vor%

Es braucht nur ein Verbindungsobjekt.

Ich muss noch einen richtigen Test geben! Unglücklicherweise muss jedes Mal ein neues Verbindungsobjekt übergeben werden, wenn Sie etwas von einem XSD deklarieren.

    
DomBat 12.01.2009, 17:01
quelle
1

Außerdem wurde festgestellt, dass die angegebene Eigenschaft (ConnectionModifier) ​​zwar "Public" ist, diese jedoch nicht über den Code angezeigt werden kann, wenn es sich um einen QueriesTableAdapter handelt. Daher musste ich eine ganze Weile damit verbringen, diese zu entfernen und sie durch einen normalen "Using Query" -Block zu ersetzen.

Ich bin mir auch sicher, dass das Projekt jetzt schneller scheint. Es könnte die Verringerung der Größe oder die Verwendung von "Using" mit allen Rufe sein (der ursprüngliche Code war früh in unseren .NET-Tagen, also hätte er besser geschrieben werden können).

    
DomBat 27.01.2009 14:21
quelle