Avatar billede Slettet bruger
05. december 2005 - 16:13 Der er 5 kommentarer og
1 løsning

Dynamisk ConnectionString

Hejsa,

Jeg sidder med et lille problem.
Jeg er ved at lave en applikation, hvor hver bruger så at sige har deres egen MySql database til deres rådighed. Brugere logger ind fra et centralt sted og det er så op til systemet - ud fra det givne login - at åbne forbindelsen til den rette database så brugeren kan arbejde med sine data.

Bemærk: Det skal lige siges at applikationen skal laves som en 3-lags applikation.

Jeg er selv kommet op med en midlertidig løsning, hvor der sendes et id med fra selve brugergrænsefladen (login osv.) ned til selve modellaget hvor der så åbnes til den rette database ud fra dette id.

Imidlertid kan det virke lidt uoverskueligt at skulle sende id med til hver enkelt metode der skal bruge dataadgang - det vil jo sige at id skal sendes ned til funktionslaget, der igen modtager det og videresender det til modellen med eventuelle andre parametre.

Er der en bedre løsning, hvor man fx. kan referere til web.config eller session-objektet fra det underste lag?
Avatar billede Slettet bruger
05. december 2005 - 17:38 #1
Hvis din tre-lags model er rent logisk og den aldrig vil blive fysisk så kan du godt lave en entry i web.config, som datalaget kan anvende til at foretage connect. Der er jo så bare det problem at hvis dit datalag eller måske bare dit businesslag bliver placeret under COM+ så er det jo ligesom slut med den ide.

Så du må nok se dig selv dybt i øjenene inden du foretager det valg.
Avatar billede Slettet bruger
05. december 2005 - 19:46 #2
Hejsa og tak for respons.
Jeg har netop selv gået med samme tanke, altså at datalaget rent fysisk bare er en undermappe til selve webapplikationen og det samme med business.
Jeg regner ikke med at det bliver splittet ud rent fysisk og på denne måde sikres stadig at kald og operationer på selve databasen holdes ét sted som gør det nemt at vedligeholde.

Men hvordan kan man rent praktisk lave det i web.config filen - altså jeg tænker på dynamiske connectionstrings?
En anden måde er selvfølgelig at gøre det på den måde jeg gør det på nu, hvor jeg sender id ned til klassen der står for connection - i det nye tilfælde skal jeg så dog ikke sende id med da jeg kan trække det direkte fra IPrincipal-objektet.

Men hvis det er muligt at oprette connectionstring direkte i web.config filen ville dette måske være en god ide at gøre. Her tænkes ikke på en enkelt string, men en string for hver bruger der er oprettet selvfølgelig.
Avatar billede Slettet bruger
06. december 2005 - 07:52 #3
Hvis du på nogen måder i datalaget kan finde ud af hvem brugeren er og dermed vælge en nøgle fra din web.config (som du sikker ved har du mulighed for at lave en række key/value indgange i web.config ved <add key="" value=""/>

Men det kræver at datalaget kan finde en nøgle, som den kan bruge til at slå den tilhørende connection-string op med.
Avatar billede Slettet bruger
06. december 2005 - 10:14 #4
Jeg har lavet det midlertidigt på følgende måde.

- Jeg har en connectionklasse sådan at det administreres ét enkelt sted.
Her modtages et id, som bruges til at bygge connectionstring op med.

this.connectionString = "Database=" + id + ";";
            this.connectionString += "Data Source=localhost;";
            this.connectionString += "User Id=xxxxxx;Password=xxxxxx";

Selve id kan man så attache til customprincipal objektet der oprettes ved login - altså sådan at IIdentity bliver sat til id og dette kan hentes i det øverste lag ved hvert kald til databasen som så sendes med ned og bruges til opbygningen af strengen.

Hvis jeg laver er struktur hvor det ikke er fysiske lag, men blot logiske kan jeg fange id direkte fra datalaget og dermed slippe for at sende id rundt gennem systemet hvilket jo ikke ligefrem gør det vedlæigeholdelsesvenligt i tilfælde af at der ændres på metoden til connection.

Det med webconfic kan jeg egentlig godt lide.

Her vil jeg så have mulighed for at trække en connectionstring ud med både variabelt brugerid og password, men hvordan gøres det?

- Kan jeg oprette nye entries i web.config filen dynamisk gennem koden?
- Hvordan refereres præcist til en connectionstring hvis man har flere entries?
Avatar billede Slettet bruger
10. december 2005 - 17:27 #5
kryptos, vi kom jo desværre ikke så langt efter den logiske opbygning, men du skal da have dine point for dit forslag.
Smidder du lige et svar?
Avatar billede Slettet bruger
10. december 2005 - 19:24 #6
svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester