Kokie požiūriai egzistuoja EF Core ekosistemoje?
sobes.tech AI
Atsakymas iš AI
Entity Framework Core ekosistemos kontekste yra trys pagrindiniai požiūriai (approach) dirbant su duomenų bazės schema:
-
Database First: Duomenų bazės schema jau egzistuoja, ir EF Core generuoja modelių klases (entities) ir
DbContextpagal šią schemą.- Privalumai: Greitas pradžia su turima duomenų baze, schema visiškai kontroliuojama iš duomenų bazės.
- Trūkumai: Pakeitimai duomenų bazėje reikalauja pakartotinai generuoti kodą, kas gali perrašyti pritaikytą kodą.
// Pavyzdys komandos, skirto generuoti iš esamos duomenų bazės // Scaffold-DbContext "Server=(localdb)\\mssqllocaldb;Database=MyDatabase;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -
Code First: Apibrėžiate modelius (entities) ir
DbContextC# kode. EF Core kuria arba atnaujina duomenų bazės schemą pagal šiuos apibrėžimus naudodamas migracijas.- Privalumai: Pilnas kontrolė virš modelių kodo, integracija su programos kodu, naudojant migracijas schemos pakeitimams valdyti.
- Trūkumai: Reikalauja migracijų valdymo, schemos pakeitimai visada prasideda nuo kodo pakeitimų.
// Pavyzdys modelio klasės Code First požiūriu public class Product { public int Id { get; set; } public string Name { get; set; } public decimal Price { get; set; } } -
Model First: Šis požiūris, nors ir buvo senesnėse EF versijose (prieš Core), EF Core nėra natūralus ir savarankiškas požiūris kaip Database First ar Code First. Iš esmės, Model First EF Core apima modelių rašymą kode (kaip Code First) ir jų pagrindu duomenų bazės generavimą. Nėra atskiro vizualinio modelių dizainerio, kaip EF 6. Taigi, EF Core kontekste dažnai laikomas kaip specialus Code First atvejis, kai rankiniu būdu aprašote modelį be naudojimo turimos duomenų bazės.
Pagrindinės požiūrių savybės:
| Požiūris | Pradžia | Duomenų bazės schemos valdymas | Pakeitimų įrankiai |
|---|---|---|---|
| Database First | Esama duomenų bazė | Rankiniu būdu duomenų bazėje | Scaffold-DbContext |
| Code First | Modelių klasės ir DbContext C# |
EF Core migracijos | Add-Migration, Update-Database |
| Model First (EF Core kontekste) | Modelių klasės ir DbContext C# (be turimos duomenų bazės) |
EF Core migracijos arba generavimas paleidus | Add-Migration, Update-Database |
Pasirinkimas priklauso nuo projekto pradinių sąlygų ir komandos pageidavimų. Code First yra dažniausiai naudojamas naujuose EF Core projektuose dėl lankstumo ir integracijos su kūrimo procesu.