Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Databasanslutningar till flera databaser

Postades av 2005-09-19 09:52:43 - Per Hultqvist, i forum asp.net generellt, Tråden har 3 Kommentarer och lästs av 482 personer

Jag har ett problem med en ASP.Net-applikation som har en admindatabas och ett flertal företagsdatabaser. I inloggningen så väljer man vilket företag man vill jobba mot och connectionsträngen till företagsdatabasen anpassas efter detta. I web-configen sparar jag bara connectionsträngen till admindatabasen och ersätter sedan admindatabasens namn med namnet på den företagsdatabas som användaren loggat in på för att skapa connectionsträngen till företagsdatabasen.

Nu till mitt bekymmer; Min första tanke var att lägga företagsconnectionsträngen i en variabel (shared) nere i datalagret (flerskiktad applikation) men i en webbapplikation så innebär detta uppenbarligen att ALLA användare delar den variabeln, så den lösningen håller inte. Så fort en annan användare loggar in på ett annat företag så kommer den första användaren sedan att skriva ned och läsa data från fel databas.

En annan variant är ju att lagra företagsdatabasens namn eller hela connectionsträngen i en session-variabel, men den kommer man ju inte åt i datalagret!? Och att skicka med denna ned till varenda funktion genom alla lager är oacceptabelt tycker jag.

Finns det något sätt att komma åt eller lagra session-specifika uppgifter i datalagret så att man slipper skicka ned parametrar hela vägen ner i alla funktioner?


Svara

Sv: Databasanslutningar till flera databaser

Postades av 2005-09-19 12:29:27 - Pelle Johansson

Connectionsträngen eller strängarna bör du lägga i web-config och sedan via ditt datalager hämta dessa efter behov. Tänk bara på att använda samma connectionsträngar för dina databaser så du inte blir av med connectionpoolingen.


Svara

Sv:Databasanslutningar till flera databaser

Postades av 2005-09-19 13:17:08 - Per Hultqvist

Hej Pelle,

Jag har nog inte beskrivit problemet helt tydligt. Connectionsträngen till admindatabasen (som är den enda "kända" databasen) ligger i web.config. Utöver denna har jag en eller flera företagsdatabaser vars connectionsträngar jag får fram genom att ersätta databasnamnet i adminconnectionsträngen. Detta är inget bekymmer.

Problemet ligger egentligen i att jag i datalagret inte har tillgång till t ex Session-objektet, så därför vet jag inte där vilket företag användaren är inloggad på. I en windowsapplikation (WinForms) hade jag lagt connectionsträngen i en shared variabel i datalagret, och satt värdet på denna efter inloggningen, men gör jag samma sak i en webbapplikation så delas ju variabeln av alla användare vilket inte är vad jag vill. Olika användare kan ju vara inloggade på olika företag vid samma tidpunkt så att lagra connectionsträngen till företagsdatabasen i en shared variabel fungerar ju helt enkelt inte eftersom denna inte blir session-specifik eller användarspecifik.

Så, ett alternativ är ju att lagra företagsnamn och/eller connectionsträngen i en Session-variabel och sedan vid varje databasanrop skicka det hela vägen ned till datalagret (lämpligen i konstruktorn till varje klass i respektive lager, inte i varje funktion), men det är detta som känns lite omständigt. Det borde väl finnas en enklare lösning? Man kan väl inte komma åt värdet i en session-variabel ifrån datalagret?

Så här i efterhand önskar jag att vi haft EN enda databas i stället för att separera dem per kund/företag men det går inte att ändra just nu. Då hade det ju varit trivialt att spara connectionsträngen i web.config.


Svara

Sv: Databasanslutningar till flera databaser

Postades av 2005-09-20 16:07:37 - Per Hultqvist

Det gick visst att komma åt session-objektet ifrån datalagret. Tydligen gör man så här :

<code>
Imports System.Web.HttpContext

Protected Shared mConnectionStrings As Hashtable = New Hashtable

Public Shared Property ConnectionString() As String
Get
Dim companyID As Integer = CType(System.Web.HttpContext.Current.Session("CompanyID"), Integer)
Return mConnectionStrings.Item("Company" & companyID.ToString).ToString
End Get
Set(ByVal Value As String)
Dim companyID As Integer = CType(System.Web.HttpContext.Current.Session("CompanyID"), Integer)
If Not mConnectionStrings.ContainsKey("Company" & companyID.ToString) Then
mConnectionStrings.Add("Company" & companyID.ToString, Value)
End If
End Set
End Property
</code>

Problemet löst...


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 606
27 953
271 705
873
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies