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


Databaskoppling, hur designa?

Postades av 2004-01-29 11:14:21 - Johan Djupmarker, i forum visual studio.NET IDE, Tråden har 11 Kommentarer och lästs av 824 personer

Jag sitter och klurar på hur man smidigast separerar kopplingarna till databasen från resten av koden. Jag ska göra en applikation i C# som från början kommer jobba mot en Access-databas, men tanken är att denna ska kunna bytas mot en SQL-Server eller någon annan databas som kontaktas via en webservice utan att hela programmet behöver skrivas om. Finns det någon "standard" på hur man löser detta?

Jag har klurat en del på detta och det enda sättet jag kan komma på är att skapa en klass med en metod för varje dataset som behöver hämtas och sedan en metod dit man skickar datasetet när man har uppdaterat det och denna metoden uppdaterar sedan databasen med de ändringar som är gjorda. Jag antar att det underlättar att jobba med dataset eftersom de flesta griddar jag har kollat på i stort sett kräver att man jobbar med dem "databundna" och en stor den av redigeringen i applikationen kommer ske med olika griddar.

Är detta genomförbart? Är det ett helt vansinningt förfarande? Hur bör man göra istället? Har du en länk där dessa problem diskuteras tar jag gärna emot det! :)

/Johan


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 11:32:45 - Pelle Johansson

Du syftar på connectionsträngen eller? Den lägger du i så fall i web.config

<info>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>

<appSettings>
<add key="ConnectionString" value="server=....uid=;pwd=;database=pellesoft" />
<add key="ConnectionStringLocal" value="server=..." />
</appSettings>
</info>

Sen finns en metod som hämtar dessa till koden:

<info>
Public Class dbfunctions

Shared Function GetConnectionString() As String

' returnerar olika connectionsträngar beroende på om man kör på localhost
' eller inte. Kör man på localhost används den lokala databasen på utvmaskinen.

If InStr(HttpContext.Current.Request.Url.ToString, "localhost") > 0 Then
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionStringLocal")
Else
GetConnectionString = ConfigurationSettings.AppSettings("ConnectionString")
End If

End Function
</info>

Vet inte om det hjälpte - men kanske gav dig en idé.


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 13:09:49 - Johan Djupmarker

Nej, det var tyvärr inte så jag menade. Dels är det Windows Forms-applikation och sedan är det betydligt mer som skiljer om man ansluter direkt mot databasen jämfört med om man ansluter via en webservice. Själva kopplingssträngen är det enkla i detta fallet.

/Johan


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 14:00:58 - Walle Hallman

Hej

Tycker inte det är något fel alls att göra som du skriver, kanske en managerklass per tabell. Dessa managers kan du sedan kapsla in i en klass som hämtar rätt manager för att uppdatera den aktuella tabellen.

Om du tittar på lite olika O/R mappers så fungerar många på detta sätt. Du har ett interface utåt och sen en mängd olika klasser som vet hur varje objekt skall sparas och hämtas. På http://www.asp.net/Forums/Default.aspx?tabindex=0&tabid=1 så hittar du mer information, kika där och i synnerhet i arkitektur delen om du vill läsa mer. Ladda också ner en o/r mapper från sourceforge och kika på hur de har löst det.


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 14:27:38 - Fredrik Normén

Jag skulle skapat en plug-in arktiektur där alla data source klasser ärver ett och samma interface (ev basklass) med hjälp funktioner för att hämta data. Sedan skullel jag bygga "providers" som ärver interfacet och går mot olika datakällor.

Skulle även skapat en egen section handler i app.config dör jag enkelt specar vilken provider jag vill använda. Då om jag vill byta provider kan jag enkelt ändra det i en config fil istället för att ändra i koden och kompilera om allt.

/Fredrik Normén NSQUARED2


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 14:47:26 - Johan Djupmarker

Att använda ett interface är väl rätt vettigt, det hade jag tänkt mig. Jag börjar få kläm på hur jag ska göra nu. Det jag är lite osäker på är om man ska "skicka tillbaka" datasetet som man har ändrat i till "providern" för att spara information till databasen. Jag har inte testat själv än, men det det borde väl gå utan problem? Alternativet är väl att skriva en wrapperklass per tabell, men det känns rätt jobbigt när det är många tabeller...

/Johan


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 16:27:43 - Walle Hallman

En sak som jag gjorde när jag använde den metoden som jag skrev om innan, var att använda codesmith för att generera alla dataaccessklasserna.. Tror att där finns en template för detta i supportforumet, om inte så är där bra exempel på hur man löser det..

Var väldigt smidigt, bara välja vilka tabeller som man ville ha info från, köra codesmith och så hade man ett hyffsat dal..

http://www.ericjsmith.net/codesmith/forum/


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 16:39:49 - Johan Djupmarker

Tack, det kanske kan vara något. Det är väl dax att testa de båda metoderna nu för att se vad som fungerar bäst i praktiken nu då...

/Johan


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 18:06:44 - Hobil Haidari

Johan, du verkar ha tur, 15seconds.com (fantastisk site) lade precis upp en sådan artikel i dagarna (27 jan).

Det gör precis det du talar om, kapslar in datahämtning, du kanske kan få lite ider därifrån oxo.
http://www.15seconds.com/issue/040127.htm

Dessutom har Bipin Joshi skrivit om MS Data Application Block för att passa till att passa med flera dber, oxo väldigt intressant http://www.dotnetbips.com/displayarticle.aspx?id=150

En annan kanonsida som tar upp samma problematik är sitepoint.com i deras artikel "unified data access in .NET", visserligen gjorde för asp.net men det borde inte vara omöjligt att anpassa mönstret till att omfatta windows forms (factory mönstret används)
http://www.sitepoint.com/article/1253


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 18:25:50 - Johan Djupmarker

Tack, det var intressanta artiklar, speciellt den från 15seconds! Även om detta inte är mitt grundproblem så är det användbart för vissa delar, samt säker till framtida applikationer. Dessutom frågade min kollega mig om jag hade en bra lösning på detta problemet nyligen, så det är en perfekt länk att skicka till honom! ;)

/Johan


Svara

Sv: Databaskoppling, hur designa?

Postades av 2004-01-29 18:26:51 - Fredrik Normén

För er som är lite nyfikna på hur man kan använda olika providers i nästa verision av ADO.Net ta då en titt på mitt "Data Access Applikations block" workspace:

http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=65fa26c3-a62a-49d6-895d-422272e53a0c

Skulle även rekommendera er att gå till denna site:

http://www.gotdotnet.com/Community/Workspaces/Workspace.aspx?id=c20d12b0-af52-402b-9b7c-aaeb21d1f431

Där hittar ni en utveckling av Microsofts Data Access Applikations block, där providers kan definieras i web.config och enkelt byta ut.

/Fredrik Normén NSQUARED2



Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 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

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 615
27 953
271 709
403
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