Avatar billede snyde Nybegynder
11. juli 2005 - 21:31 Der er 14 kommentarer

DB tilgang design, lagdeling?

Hej Eksperter,

Jeg har lavet lidt små applikationer i .NET, og har herunder læst lidt Todos, det er altid the .NET way med dataadapter, sql query og en binging af en datasource der gennemgåes.

Der nævnes aldrig en .NET way at lagdele på, det en selvfølgelge at det ikke er en god dårlig ide at have alt sql, og oprettelser af DB forbindelser et sted.

Er der nogen der ved, om der findes et pattern eller en måde at lagdele på jf. en NET standart.

På forhånd tak for jeres svar.


Med venlig hilsen


Anders
Avatar billede arne_v Ekspert
11. juli 2005 - 21:33 #1
der er adskillige artikler på MSDN med klassisk lag deling:
  presentation layer
  busines slogic layer
  data access layer

jeg kan godt prøve at se om jeg kan finde nogle links
Avatar billede snyde Nybegynder
12. juli 2005 - 08:33 #5
Hej Arne,

Tak for dine svar, artiklerne fortæller at der kan lagdeles, men der er ikke nogle tekniske spec på hvordan det overhovedet kan lade sig gøre.

Jeg har brug for mere præcise svar. Jeg kan sige at jeg selv har forsøgt at lagdele, ved at holde alt DB adgang i en klasse, og sql opdelt i forskellige klasser. Dermed har jeg et lag der kan returnere en datareader, DS mm. Det har dog den ulempe at jeg skal returnere en connection, hvis jeg bruger en datareader, da jeg skal lukke min connection efter mig.

Det er ikke nogen pæn lag deling. Jeg kunne selvfølgelig også lave nogle modelklasser, og returnere et array af dem fra mit datalag, det ville løse det problem, men her laver jeg en tæt kobling mellem datalg og business kode, heller ikke den smarteste løsning.

Det er derfor jeg efterspørger, om der findes en .NET way at lave tingende på.

Med venlig hilsen

Anders
Avatar billede arne_v Ekspert
12. juli 2005 - 08:56 #6
Det er jo ikke så meget en .NET ting men mere generel design.

Rent konkret kan du angive i et argument til ExecuteReader at den skal lukke
connection når den er færdig med at Read'e.

Hvis opdelingen mellem bussiness logic og data access skal være pæn så skal
dun undgå at bruge System.Data... klasser til at flytte data med.
Avatar billede snyde Nybegynder
12. juli 2005 - 09:06 #7
Ja okay det er mere et design spørgsmål, det har du ret i.

Det var smart at det kan angives på readeren.

Hvad mener du med at jeg ikke skal bruge System.Data dvs. helt undgå at benytte datareadere eller datasets?
Avatar billede arne_v Ekspert
12. juli 2005 - 09:09 #8
DataReader er helt fint - internt i data access layer - men fra en puristisk
synsvinkel bør interfacet mellem business logic og data access ikke bruge
den slags database specifikke klasser
Avatar billede snyde Nybegynder
12. juli 2005 - 09:13 #9
Data readeren er ikke så slem. Det er værre med datasættet der indeholder en ofline kopi af databasen.

Jeg giver point på dit svar med at en datareader kan lukkes, men skal sidst lige høre om der er andre forslag til en god model jf. overstående.
Avatar billede arne_v Ekspert
12. juli 2005 - 09:21 #10
en data reader kan ikke serialiseres

en data reader er specifik for en bestemt slags data opbevaring
Avatar billede arne_v Ekspert
12. juli 2005 - 09:21 #11
og et svar
Avatar billede snyde Nybegynder
12. juli 2005 - 10:00 #12
Fint nok.

okay, men det får jeg nu alligevel ikke brug for :-)
Avatar billede arne_v Ekspert
03. september 2005 - 19:25 #13
tid at acceptere svaret ?
Avatar billede snyde Nybegynder
05. september 2005 - 08:23 #14
så lad gå :-)
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
Kurser inden for grundlæggende programmering

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



IT-JOB