Bevat enkel de starter files, niet de effectieve VS Solution.
In deze oefeningen les starten we met het bouwen van een online sportwinkel: SportsStore. In deze online winkel kunnen gebruikers de catalogus met sportartikelen Product raadplegen. Deze artikelen, die elk tot een bepaalde categorie Category behoren, kunnen ze in een winkelmandje Cart leggen. Uiteindelijk kunnen aangemelde klanten Customer de artikelen die in het winkelmandje liggen effectief bestellen Order. Hieronder vind je enkele screenshots die je een idee geven van de SportsStore.
In deze oefening maak je een nieuw project op basis van enkele reeds bestaande klassen. Deze vind je terug in deze repository.
- Maak een nieuwe Console applicatie SportsStore aan en voeg toe aan source control
- Voeg SQL Server database provider for Entity Framework Core toe en het Entity Framework Core tools package
- Commit
- Maak de persistentieklasse
ApplicationDbContextaan in de Data folder - Configureer de Database Provider
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var connectionstring = @"Server=.;Database=SportsStore;Integrated Security=True;";
optionsBuilder.UseSqlServer(connectionstring);
} - Pas program.cs aan zodat de database telkens opnieuw gecreëerd wordt
- Run, controleer of database werd aangemaakt
- Commit
- Maak de
Modelsfolder aan; - Voeg de klasse
Producttoe. (zie Models folder in deze repository) - Deze klasse moet als de image hieronder gemapt worden;
- De naam van de tabel is
Product. - Voeg de volgende items toe:
DbSet(s)- Mapping via Fluent API
- Build het project.
- Run en controleer of de database
SportsStoreis aangemaakt en tabelProductbovenstaande kolommen bevat. - Commit “Add class Product and mapping”
| PK | Column Name | Data Type | Allows NULL |
|---|---|---|---|
| X | ProductId | int | No |
| Description | nvarchar(max) | Yes | |
| Name | nvarchar(100) | No | |
| Price | decimal(18,2) | No |
- Voeg de klasse
Citytoe. - Map de klasse naar de tabel
City - Run en controleer de database.
- Commit “Add class City and mapping”
| PK | Column Name | Data Type | Allows NULL |
|---|---|---|---|
| X | PostalCode | nvarchar(5) | No |
| Name | nvarchar(100) | No |
- Voeg de klasse
Customertoe. - Map de klasse en associatie met
City(geen cascading delete) - Run en controleer de database.
- Commit “Add class Customer and mapping”
| PK | Column Name | Data Type | Allows NULL |
|---|---|---|---|
| X | CustomerId | int | No |
| CityPostalCode | nvarchar(5) | No | |
| CustomerName | nvarchar(20) | No | |
| FirstName | nvarchar(100) | No | |
| Name | nvarchar(100) | No | |
| Street | nvarchar(100) | Yes |
- Voeg de klassen Cart en CartLine toe.
- Deze klassen mogen niet in de database worden opgenomen.
- Waarom nemen we deze klassen niet op in de database?
- Run en controleer de database.
- Commit
- Voeg de klassen
OrderenOrderLinetoe. - Verwijder de commentaar uit de klasse
Customer, zodat Customer nu zijnOrderskent. - Map de klassen en associaties. Denk na over de cascading. Een
Orderverwijderen, verwijdert ook deOrderLines. Eenproductverwijderen kan enkel als het in geen enkelordervoorkomt. ` - Je hoeft geen
DbSette voorzien voorOrderenOrderLinein de klasseApplicationDbContext. Waarom niet? - De database ziet er als volgt uit. Genereer het database diagram in Sql Server Management Studio
- Commit
Vervolledig onderstaande methodes in de domeinklasse Order en Cart. Voor deze methodes zijn reeds testen voorzien. Maak eerst een test project aan en voeg de testklassen OrderTest en CartTest toe aan de Models folder. Run de testen, een aantal falen. Implementeer dan onderstaande properties/methodes:
Cart:AddLine. Deze methode voegt eenproducttoe aan deCart. Pas deze methode aan. Als product al aanwezig incartwordt het aantal met het opgegeven aantal verhoogd.Order: PropertyTotal= de som van de producten in deOrderLines (aantal * prijs)Order: MethodeHasOrderedProduct. Deze methode gaat na of dit product werd besteld. Maak gebruik van deEqualsmethode vanProduct. Bekijk de implementatie. 2 producten zijn gelijk als ze eenzelfdeproductIdhebben.- Run de testen. Alle testen moeten slagen.
- Commit



