Sobes.tech
Junior

Kas yra Entity Framework?

sobes.tech AI

Atsakymas iš AI

Entity Framework (EF) — tai objektų-reliacinis akceleratorius (ORM) .NET platformai, leidžiantis kūrėjams dirbti su duomenų bazėmis naudodami .NET objektus, o ne rašyti didžiąją dalį duomenų prieigos kodo. Jis paverčia LINQ užklausas į SQL ir atgal.

Pagrindinės komponentės ir galimybės:

  • DbContext: atstovauja sesiją su duomenų baze, apima DbSet'us entitetams.
  • DbSet: atstovauja tam tikro tipo entitetų kolekciją kontekste.
  • LINQ to Entities: leidžia rašyti užklausas duomenų bazei naudojant LINQ sintaksę.
  • Migracijos (Code-First Migrations): leidžia valdyti duomenų bazės schemos pakeitimus duomenų modelio vystymosi metu.
  • Pakeitimų stebėjimas: EF automatiškai stebi pakeitimus, padarytus į duomenų bazę įkeltuose entitetuose, ir generuoja atitinkamas SQL komandas šių pakeitimų išsaugojimui.

Palaikomi kūrimo būdai:

  • Code-First: apibrėžti duomenų modelį C# kode ir generuoti duomenų bazės schemą remiantis juo.
  • Database-First: sukurti .NET modelį iš esamos duomenų bazės.
  • Model-First: sukurti grafinį modelį EF dizaineriu ir generuoti tiek kodą, tiek duomenų bazės schemą. (Mažiau paplitęs EF Core)

Privalumai:

  • Greitesnis vystymas dėl abstrakcijos nuo duomenų prieigos detalės.
  • Stipri tipizacija ir patikra kompiliacijos metu.
  • Patogus duomenų modelio ir jo pakeitimų valdymas.

Pavyzdys naudojant EF Core (Code-First paradigma):

// Duomenų modelio apibrėžimas
public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }
    public List<Post> Posts { get; set; }
}

public class Post
{
    public int PostId { get; set; }
    public string Title { get; set; }
    public string Content { get; set; }
    public int BlogId { get; set; }
    public Blog Blog { get; set; }
}

// Duomenų bazės konteksto apibrėžimas
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Pavyzdinė konfigūracija SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Pavyzdys naudojimo kode
// using (var context = new BloggingContext())
// {
//     // Duomenų pridėjimas
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Duomenų užklausa
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core yra krypčių platforma, lengva ir išplečiama Entity Framework versija, rekomenduojama naujiems .NET taikymams.