public async Task <bool> Lagre(Kunde innKunde) { try { var nyKundeRad = new Kunder(); nyKundeRad.Fornavn = innKunde.Fornavn; nyKundeRad.Etternavn = innKunde.Etternavn; nyKundeRad.Adresse = innKunde.Adresse; var sjekkPostnr = await _db.Poststeder.FindAsync(innKunde.Postnr); if (sjekkPostnr == null) { var poststedsRad = new Poststeder(); poststedsRad.Postnr = innKunde.Postnr; poststedsRad.Poststed = innKunde.Poststed; nyKundeRad.Poststed = poststedsRad; } else { nyKundeRad.Poststed = sjekkPostnr; } _db.Kunder.Add(nyKundeRad); await _db.SaveChangesAsync(); return(true); } catch { return(false); } }
/** * Lagre metoden blir mer komplisert når på 3. normalform fordi vi må forholde * oss til den kunden som kommer inn her (som er den flate kunden), den kunden som * ikke ligger sammen med context klassen, men den som ligger for seg selv. * Vi må omforme de attributtene som kommer inn i innKunde til den strukturen i * tabellene i context klassen hvor de er hver for seg. **/ public async Task <bool> Lagre(Kunde innKunde) { try { var nyKundeRad = new Kunder(); //lager ny kunderad, må ta new på kunder, altså db-klassen nyKundeRad.Fornavn = innKunde.Fornavn; //må overføre attributtene som skal til inn i kunden fra innKunde nyKundeRad.Etternavn = innKunde.Etternavn; //tar ikke id når vi skal lagre, men begynner med fornavnet. nyKundeRad.Adresse = innKunde.Adresse; //det er disse tre som skal inn i kunden /** * Så må vi sjekke om postnr eksisterer i db fra før av. Hvis det ikke gjør det så opprettes det * et nytt poststedsobjekt og så legges det inn i kunden. Kunne ha lagt inn alle poststeder og nr fra * hele landet på forhånd og da ville ikke lagringen vært så komplisert, men dette * gjøres for å illustrere. * * Sjekker først om poststedet finnes (bruker FindAsync). Og nøkkelen til denne * er innKunde.Postnr. Den returnerer enten poststedet eller null. **/ var sjekkPoststed = await _db.Poststeder.FindAsync(innKunde.Postnr); if (sjekkPoststed == null) //hvis poststedet ikke fantes { var nyPoststedsRad = new Poststeder(); //da oppretter vi en ny poststedsrad nyPoststedsRad.Postnr = innKunde.Postnr; //så legger vi inn de to parameterne fra innKunde nyPoststedsRad.Poststed = innKunde.Poststed; nyKundeRad.Poststed = nyPoststedsRad; //legger inn poststedet (poststedsRad) inn i ny nyKundeRad. Da er poststedet lagt inn i kunden. } else { nyKundeRad.Poststed = sjekkPoststed; } _db.Kunder.Add(nyKundeRad); await _db.SaveChangesAsync(); return(true); } catch { return(false); } }