2010-01-20 10 views
6

Mam aplikację asp.net nTier. Warstwa dostępu do danych jest silnie typowanym zestawem danych składającym się z wielu DataTables z DataAdapters. Gdy użytkownik się loguje, wybiera bazę danych, z którą ma się połączyć (z tabeli w bazie danych członkostwa). Muszę przekazać wybrany ciąg połączenia do obiektu DataSet, który pozostanie taki sam dla tych użytkowników, dopóki nie zalogują się ponownie.Dynamiczny ciąg połączenia dla mocno wpisanego zestawu danych

Myślę, że odpowiedź może polegać na utworzeniu częściowej klasy obiektu DataSet, w której mogę przekazać ciąg połączenia do konstruktora. Nie jestem pewien, jak to zrobić.

Pozdrowienia

Odpowiedz

3

Można to zrobić z klasą częściową.

Zakładając, że wpisany zestawu danych nazywa HurrDurr:

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

_connection inicjowany jest tylko wtedy, gdy jest zerowy po raz pierwszy nieruchomość wewnętrzne połączenie jest dostępne.

+0

Will, próbowałem twojej sugestii w vb.net, ale otrzymuję komunikat o błędzie: "Błąd 33 _connection" nie jest członkiem DAL.ds1 ". Jakieś pomysły, gdzie idą źle? – SausageFingers

+0

@fly Nie mam pojęcia, co to plik .ds1. Możesz zerknąć na kod utworzony przez narzędzie wpisanego zestawu danych (rozwiń plik xsd i spójrz na pliki kodu). Wersja VB może zapisać połączenie pod inną nazwą zmiennej. – Will

+0

Przepraszam, że powinienem być jaśniejszy. DAL.ds1 odnosi się do nazwy projektu "DAL" i nazwy zestawu danych "ds1". "ds1" jest klasą wygenerowaną z xsd, zakładam, że nazywa się to HurrDurr. Po przejrzeniu kodu widzę zmienną członka połączenia w adapterze do tabeli? Czy to jest to, czego potrzebuję, aby stworzyć klasę częściową? – SausageFingers

3

Wreszcie doszło do sedna. W nowym module stworzyłem częściową klasę do adaptera tabeli, w której potrzebowałem zmienić ciąg połączenia, jeden błąd, który początkowo tworzyłem, nie określał poprawnej przestrzeni nazw.

Poniżej znajduje się częściowy klasa I stworzył który pozwolił mi dynamicznie zmienić ciąg połączenia jednego z moich kart tabeli dla tabeli o nazwie tblOptions:

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

Dzięki za pomoc Will, zrobiło mi idzie w właściwy kierunek.