2010-01-20 11 views
6

Ich habe eine asp.net nTier-Anwendung. Die Datenzugriffsebene ist ein stark typisiertes DataSet, das aus mehreren DataTables mit DataAdaptern besteht. Wenn sich der Benutzer anmeldet, wählt er die zu verbindende Datenbank (aus einer Tabelle in der Mitgliedschaftsdatenbank). Ich muss die ausgewählte Verbindungszeichenfolge in das DataSet-Objekt übergeben, das für diese Benutzer gleich bleibt, bis sie sich erneut anmelden.Dynamische Verbindungszeichenfolge für einen stark typisierten Datensatz

Ich denke, dass die Antwort eine Teilklasse des DataSet-Objekts erstellen könnte, wo ich die Verbindungszeichenfolge in den Konstruktor übergeben kann. Ich bin mir nicht sicher, wie ich das machen soll.

Prost

Antwort

3

Man könnte dies mit einer partiellen Klasse tun.

Vorausgesetzt, dass Ihre eingegebenen Datensatz wird HurrDurr genannt:

public partial class HurrDurr 
{ 
    public HurrDurr(string connex) 
    {  
    this._connection = new global::System.Data.SqlClient.SqlConnection(); 
    this._connection.ConnectionString = connex; 
    } 
} 

_connection nur initialisiert, wenn es um die Verbindung interne Eigenschaft null ist das erste Mal zugegriffen wird.

+0

Will, ich habe Ihren Vorschlag in vb.net versucht, aber ich bekomme einen Fehler: "Fehler 33 _connection 'ist kein Mitglied von DAL.ds1". Irgendwelche Ideen, wo ich falsch liege? – SausageFingers

+0

@fly Ich habe keine Ahnung, was eine .ds1-Datei ist. Sie können den vom typisierten Dataset-Tool erstellten Code ansehen (erweitern Sie das xsd und sehen Sie sich die Codedateien an). Die VB-Version kann die Verbindung in einem anderen Variablennamen speichern. – Will

+0

Entschuldigung, ich hätte klarer sein sollen. DAL.ds1 bezieht sich auf den Projektnamen "DAL" und den Datasetnamen "ds1". "ds1" ist die Klasse, die aus dem xsd generiert wird. Ich nehme an, dass Sie das als HurrDurr bezeichnen. Nachdem ich den Code angeschaut habe, sehe ich eine Variable _connection Member im Tabellenadapter? Ist das, was ich brauche, um eine partielle Klasse gegen zu schaffen? – SausageFingers

3

Endlich auf den Grund dieser. In einem neuen Modul habe ich eine partielle Klasse für den Tabellenadapter erstellt, wo ich die Verbindungszeichenfolge ändern musste. Ein Fehler, den ich ursprünglich gemacht hatte, war nicht der korrekte Namespace.

Unterhalb der Teilklasse I geschaffen, die mir dynamisch die Verbindungszeichenfolge von einem meiner Tischadapter für eine Tabelle namens tblOptions ändern darf:

Namespace ds1TableAdapters 
    Partial Public Class tblOptionsTableAdapter 
     Sub ChangeConnString(ByVal newConn As String) 
      Me._connection.ConnectionString = newConn 
     End Sub 
    End Class 
End Namespace 

Dank für die Hilfe, es hat mich in gehen die richtige Richtung.

Verwandte Themen