Postopek Implementacije

Nazaj na Kodo

Ta dokument razlaga "KAKO" stvari povežemo v Visual Studiu. Uporabite ga v kombinaciji s pripravljeno kodo iz prejšnjega dokumenta.

1

Priprava Projekta & Paketi

Ko ustvarite nov projekt (ASP.NET Core Web API), morate najprej namestiti knjižnice, da bo koda sploh delovala.

Namestitev NuGet Paketov

V meniju: Tools > NuGet Package Manager > Package Manager Console. Zaženite:

Install-Package Microsoft.EntityFrameworkCore.Sqlite
Install-Package Microsoft.EntityFrameworkCore.Tools
Install-Package Grpc.AspNetCore

Prva dva sta za Bazo (Naloga 3, 4, 5), tretji je za gRPC (Naloga 6).

2

Povezava z Bazo (EF Core)

1. Ustvarjanje Modelov

V mapi Models ustvarite navadne C# razrede (Avto.cs, Lastnik.cs). Pomembno je, da določite Primary Key (Id) in relacije (List<Prodaja>).

  • Uporabite [Key] in [Required], da bazi poveste pravila.
  • Relacije: Če ima Avto seznam prodaj, mora Prodaja imeti AvtoId in objekt Avto. To EF Core prebere in sam ustvari povezave (Foreign Keys).

2. Registracija Contexta (Ključni del!)

Baza ne bo delovala, če je ne registrirate v Program.cs. To je "most" med vašo kodo in SQLite datoteko.

Koda v Program.cs (pred var app = builder.Build()):

builder.Services.AddDbContext<AvtoContext>(options => 
    options.UseSqlite("Data Source=avtohisa.db"));

To pove aplikaciji: "Uporabi razred AvtoContext in podatke shrani v datoteko avtohisa.db".

3. Migracije (Ustvarjanje baze)

Ko imate modele in povezavo, morate fizično ustvariti bazo. V konzoli (Package Manager Console) zaženite:

Add-Migration Initial
Update-Database

Če to uspe, se bo v projektu pojavila datoteka avtohisa.db.

3

Web API Endpointi

Namesto starih Controllerjev (MVC) uporabljamo Minimal API. Vse se dogaja v Program.cs (ali ločenih datotekah).

Kako deluje Dependency Injection?

Opazite, da v vsako metodo (npr. MapGet) kot parameter dodamo AvtoContext db.

app.MapGet("/avti", (AvtoContext db) => { ... });

ASP.NET Core bo avtomatsko "injekciral" povezavo do baze, ki ste jo ustvarili v 2. koraku. Ni vam treba pisati new AvtoContext().

Mapiranje Endpointov

V Program.cs (po app.Build()) morate poklicati vaše metode:

// Če imate endpointe v ločenih classih (priporočeno):
app.MapAvtoEndpoints(); 

// Ali pa direktno:
app.MapGet("/api/avti", ...);
4

gRPC Implementacija

gRPC je malce bolj "zoprn" ker zahteva posebno konfiguracijo datotek.

1. Proto datoteka

Ustvarite mapo Protos in vanjo datoteko avto.proto. Ko kopirate kodo notri, morate nujno:

  1. Klikniti na datoteko v Solution Explorerju.
  2. V Properties (F4) nastaviti Build Action na Protobuf compiler.
  3. Nastaviti gRPC Stub Classes na Server only (za API projekt) ali Client only (za konzolo).

Če tega ne storite, C# razredi (AvtoServiceBase) ne bodo obstajali!

2. Registracija servisa

Ko napišete AvtoService.cs, ga morate vključiti v Program.cs:

// 1. Dodaj podporo za gRPC
builder.Services.AddGrpc();

// ... (app build) ...

// 2. Mapiraj servis na endpoint
app.MapGrpcService<AvtoServiceImpl>();
5

Zaključek (Checklist)

Ali so nameščeni NuGet paketi?

Ali je v Program.cs dodan AddDbContext?

Ali ste pognali Update-Database?

Ali je .proto datoteka nastavljena na "Protobuf compiler"?

Ali so v Program.cs mapirani vsi endpointi (REST in gRPC)?