Sobes.tech
Middle

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:

  1. Database First: Duomenų bazės schema jau egzistuoja, ir EF Core generuoja modelių klases (entities) ir DbContext pagal š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
    
  2. Code First: Apibrėžiate modelius (entities) ir DbContext C# 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; }
    }
    
  3. 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.