Avatar billede Slettet bruger
14. maj 2013 - 20:56 Der er 10 kommentarer og
1 løsning

Opret objekt fra data i DB

Hej,

Jeg har lidt svært ved at gennemskue hvordan man lettest får oprettet et objekt med data fra en DB. Det objekt jeg skal oprette er af min egen klasse, men problemet er at klasse ligger i et andet lag end min databaseHandler. Hvilket betyder at jeg blot kan skrive new Kunde(.....).

Hvordan gør jeg så dette lettest?
Avatar billede arne_v Ekspert
14. maj 2013 - 21:05 #1
Dit data access layer har en klasse med en metode som returnerer en instans af en data klasse som ogsaa er i dit data access layer.

Du kan saa vaelge at lade dit business logic layer bruge den data klasse eller du kan vaelge at konvertere til en data klasse som er en del af dit business logic layer.
Avatar billede Slettet bruger
14. maj 2013 - 21:15 #2
Den klasse som du omtaler at mit data lag har, som mit business lag også har. Er mit resultset? Som jeg blot kunne sende retur til mit business lag og så gennemløbe det der, hvor min Kunde klasse er kendt.
Eller har jeg misforstået dig?
Men er det ikke lidt uheldigt? Jeg ville gerne, hvis det er muligt, lave så mit business lag ikke kendte til DBen.
Avatar billede arne_v Ekspert
14. maj 2013 - 21:27 #3
Hvis du med result set mener noget som et DataSet eller typed DataSet, saa er det ikke en god loesning for det paene design.
Avatar billede arne_v Ekspert
14. maj 2013 - 21:27 #4
Det er helt normalt at BLL har en dependency paa DAL.

Det omvendte ville vaere meget slemt.
Avatar billede Slettet bruger
14. maj 2013 - 21:37 #5
Jeg er med på at BLL afhænger af DAL og det gør det også ved mig. Men jeg kan dog forsat ikke se, hvordan jeg kan lave en række objekter fra mine data i DB.

Jeg tænker om det er muligt at oprette et objekt og så type-cast det i mit BLL, men det har jeg heller ikke fået til at lykkes.
Avatar billede arne_v Ekspert
14. maj 2013 - 23:39 #6
DAL:

public class SomeData
{
    ...
}

public class DataAccess
{
    public SomeData GetSomeData()
    {
        ...
    }
}

BLL:

DataAccess da = ...;
...
SomeData o = da.GetSomeData();
Avatar billede Slettet bruger
15. maj 2013 - 09:19 #7
Hej,

Jeg har fundet en løsning på det, men ved ikke om den rent design er en smart løsning. Jeg laver blot nogle Object, som jeg så kan caste i mit BLL til min rette klasse.

Min smid gerne et svar, som tak for hjælpen.
Avatar billede MADOlsen Forsker
15. maj 2013 - 11:17 #8
Der er vel ikke noget galt i, at dit DAL også kender din "data object klasse", så du er fri for at caste. Prøv evt. at google DTO (Data Transfer Object).
Avatar billede arne_v Ekspert
15. maj 2013 - 15:14 #9
Jeg forstaar ikke hvad du caster fra og til??
Avatar billede arne_v Ekspert
15. maj 2013 - 15:14 #10
men her et et svar
Avatar billede arne_v Ekspert
16. maj 2013 - 18:58 #11
For en del aar siden lavede jeg dette eksempel paa PL-BLL-DAL til et andet spoergsmaal:

http://www.vajhoej.dk/arne/eksperten/layers/

maaske kunne det inspirere.
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