Avatar billede sitecoredk Nybegynder
27. maj 2009 - 05:42 Der er 11 kommentarer og
1 løsning

tutorial eller bog henvisning

Hej!
Jeg står i en situation, hvor jeg skal lave en e-shop site. Her  skal jeg bl.a. registrer kundeoplysninger, vareoplysninger osv.

Jeg har lavet al forarbejdet i databasen. Det som har problemer med er, at forstå hvordan jeg omsætter database designet til classer med dertilhørende medlemmer (læs properties, methods osv.).

Eks. har jeg en tabel som hedder kunde_info, denne indeholder følgende kolonner (afgrænset); Navn, Adresse, Ordrenr osv. (Ordrenr er en sekundær nøgle, som referer til en anden tabel kaldet Ordrenr).

Jeg har tilsvarende lavet en classe også kaldet kunde_info, som indeholder navn, adresse..
Herefter har jeg lavet en ny classe kaldet Ordrenr. som indeholder følgende properties, ordrenr, varenavn, varepris, osv.

Det som jeg er usikker på og mangler bedre teoretisk indblik i er hvordan man bygger classer op udfra database designet. (forstå mig ret, jeg har helt styr på C#, classer, methods, properties osv. Kodningen er ikke problemet). Men det er designet der forvirrer mig. Eks. o databasen har jeg relationer mellem tabellerne ved. af sekundære nøgler, men hvad så med classer, laver man overhovedet en relation her mellem eks. Kunden og hans ordrenr.
Det som også driller mig er; når jeg laver en classe udfra en tabel, er det så samtlige kolonner der skal laves som properties i en classe?
Det er alle disse design ting som står sløret overfor mig.

Den eneste gode bog jeg har kunne finde omkring emnet er "ASP.NET 2.0 Everyday Apps For Dummies". Men det som jeg godt kunne tænke mig var en bog eller lign. som i mere grundigt forklarer design principper (eller hvad man nu skal kalde det), helst gerne uden asp.net og i stedet med fokus på ren C# og databaser.

Samtlige at de bøger jeg kan finde omhandler enten C# sproget og så hvordan man skriver, henter data fra databaser. Eller også gøres der alt for meget brug af ASP.NET kontroller.

Jeg håber at det er til at forstå, hvad jeg mener. Det er lidt svært at forklare det. Spørg gerne ind til hvad jeg helt præcist mener.
Avatar billede keysersoze Guru
27. maj 2009 - 08:23 #1
Problemet er lidt, at der er ikke én måde at gøre det på og det gør et svar lidt svært. To muligheder jeg dog kan nævne 1) de bøger fra Wrox der er skrevet omkring "The Beer House" - den første bog gør meget ud af at fortælle om lagopdeling og objekter både med kode og med ord ( http://www.amazon.com/gp/product/0764584642?ie=UTF8&tag=aspnettelligent-20&linkCode=as2&camp=1789&creative=9325&creativeASIN=0764584642 ) og den anden gør det ud fra MVC (http://www.wrox.com/WileyCDA/WroxTitle/ASP-NET-MVC-1-0-Website-Programming-Problem-Design-Solution.productCd-0470410957.html) og 2) Benyt en O/R Mapper, fx Microsofts eget Entity Framework, hvor du mere eller mindre får det hele foræret ( http://msdn.microsoft.com/en-us/library/aa697427(VS.80).aspx ).
Avatar billede sitecoredk Nybegynder
27. maj 2009 - 09:27 #2
Tak for svaret.
Jeg vil kigge dem efter.
Dog vil jeg sige at MVC ønsker jeg ikke at rode mig ud i.
og det med at benytte mig af en O/R Mapper er heller ikke noget jeg ønsker at bruge, (ihvertfald ikke før jeg mesterer emnet).

Men den første bog vil jeg downloade i pdf form og kigge efter. Dog er jeg allerede på nuværende tidspunkt sikker på at der vil være alt for meget asp.net i det.

Men endnu engang!
Tak for svaret!
Avatar billede aaberg Nybegynder
27. maj 2009 - 09:32 #3
Hvis jeg forstår dig ret, så har du en Customer tabel og en Orders tabel. I Orders tabellen har du en foreign-key til Customer tabellen.

I C# ville jeg ha lavet en Customer klasse og en Orders klasse. Customer klassen indeholder properties for alle kolonner i Customer tabellen. I tillæg har den en collection for dens Orders. For at undgå at måtte hente alle ordre hver gang du henter en kunde, skal du sørge for at Orders collectionen først bliver loaded når den skal bruges. Eksempeltvis sådan:

public class Customers
{
  //Her kommer mange properties (UserId, navn, adresse, o.l.)

  private List<Order> _orders = null;
  public List<Order> Orders
  {
      get
      {
        if (_orders == null)
            _orders = FetchOrdersFromDatabase(UserId)

        return _orders;
      }
  }
}

På denne måde kan du hente en Customer fra databasen. Når der er noget i din kode der henviser til myCustomer.Orders, da vil alle kundens ordre automatisk blive hentet op fra databasen. Hvis kunden sletter,opdaterer eller opretter en ordre, sætter du bare _orders = null, for da vil den automatisk blive hentet op på nyt, næste gang den skal bruges.

Håber det gav mening :-)
Avatar billede sitecoredk Nybegynder
27. maj 2009 - 15:51 #4
Tak for indlægget!
Det giver ganske god mening. Men det eksempel jeg har nævnt mht. kunde og ordre tabeller og classer er blot eksempler, der har til formål at udpensle mit problem. Det var ikke meningen at der skulle fremsættes kode eksempler.

Det jeg er ude efter er noget i retning af det som "keysersoze" kom med, nemlig bog referencer.

Jeg søger en grundig indføring i emnet. Jeg har indtil videre kun stødt ind på "ASP.NET 2.0 Everyday Apps For Dummies" der omhandler C# og layered application design. (Har endnu ikke fået set på (ASP.NET 2.0 Website Programming: Problem - Design - Solution).
Avatar billede keysersoze Guru
27. maj 2009 - 17:46 #5
der er faktisk ikke specielt meget kode i den bog - rigtig meget af bogen går på forklaring og valg. Man har ikke programmeret hele The Beer Shop når bogen er gennemgået, men man har fået forklaret hvordan tingene hænger sammen.

Men når det så er sagt er den bog jo kun ét eksempel på hvordan opbygningen kunne være - det er ikke nødvendigvis den rigtige i alle tilfælde.
Avatar billede sitecoredk Nybegynder
27. maj 2009 - 20:21 #6
Jeg har nu haft mulighed for at skimme pdf udgave af bogen; "ASP.NET 2.0 Website Programming - Problem-Design-Solution"
Det var desværre ikke det, som jeg ledte efter (tror faktisk at jeg allerede har skimmet den i gennem for noget tid siden).

Problemet med denne bog er, at den kun omhandler "Architecture" konceptet i kapitel 3. Her får emnet en blandet behandling. Der bruges en del asp.net kontroller især til database interaktivitet (hvilket også er i ledtråd med forfatteren hensigt, da han ønsker at vise asp.net 2.0's nye funktioner). Men det er bare ikke det som jeg leder efter.

Takker dog alligevel for henvisningen.

Ønsker dog lige at gøre klart, at de 200 points nok skal blive delt ud uanset hvad. Omend ikke andet, så bliver det blot til den som kommer med det "bedste svar".
Avatar billede sitecoredk Nybegynder
27. maj 2009 - 20:23 #7
Lige en ting til.
Dette er selvfølgelig ikke ensbetydende med, at folk blot giver sig til at spamme irrelevante indlæg.
Avatar billede keysersoze Guru
27. maj 2009 - 23:17 #8
jeg kan ikke huske de enkelte kapitler fra hinanden - men jeg er netop ikke enig i at forfatteren hverken ønsker at promovere 2.0 (bla fordi forfatteren egentlig bare har skrevet en forklaring om et projekt og ikke bygget et projekt op omkring forklaringen som mange andre bøger) eller at der bruges kontroller til database-aktivitet.

Klart at 2.0 bliver fremhævet da kontrollerne her giver mere mening at bruge end dem fra 1.1 men i bogen diskuteret der for og imod valget. Opbygningen af applikationen er et datalag, et businesslag og så selve GUI og det eneste sted der er database-arbejde, medmindre jeg husker helt skævt, er i DAL, ingen kontroller binder op imod andet end hvad der stilles til rådighed i BAL hvilket netop er objekterne.

Det er fair nok at bogen ikke er god nok - men dine nævnte punkter passer bare ikke med den bog jeg har læst :)

Som skrevet er der ikke én måde at løse udfordringen på - og det gør at jeg tror det bliver svært at finde den bog du søger, for der er mig bekendt ingen der forklarer netop det. Du kan finde bøger om fx ASP.NET, som forklarer enten kontroller eller kode (som du også selv nævner), og så springet op til bøger om fx OOP på det "videnskabelige" plan - alt det midt imellem mangler, måske netop fordi løsningen ikke findes. Derfor vil mit eneste tilbageværende bud være, at det handler om at kunne tilstrækkelig C# og have tilstrækkelig styr på OOP, så vil det mellemliggende automatisk fremkomme.

O/R-mappere skal du måske heller ikke være så bange for - det er klart ingen ulempe at kunne mestre kode i alle lag, men dels får du en masse arbejde foræret og dels, og ikke mindst, kan man måske herigennem blive klogere på hvad der skal til hvis man selv går i gang.

Jeg kender i hvert fald desværre ingen bøger der kan opfylde behovet - har selv søgt tidligere og aldrig fundet noget.
Avatar billede keysersoze Guru
18. september 2009 - 22:33 #9
lukketid?
Avatar billede sitecoredk Nybegynder
23. september 2009 - 12:19 #10
Har fundet de helt korrekte bøger.


- ASP. NET 3.5 Application Architecture and Design.

- MANGLER Microsoft® ASP.NET and AJAX Architecting Web Applications.

- Microsoft NET Architecting Applications for the Enterprise.

God læselyst
Avatar billede sitecoredk Nybegynder
28. september 2009 - 12:16 #12
Hej Keysersoze!
Tak for henvisningerne.

Jeg vil i øvrigt anbefale brugere at kigge på http://www.abebooks.com/
Det er et Europæisk online sted for boghandlere af brugte bøger. Her er det muligt at finde MEGET billige IT bøger [man skal dog ikke regne med at finde nye bøger herinde].
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