Sobes.tech
Junior

Čo je Entity Framework?

sobes.tech AI

Odpoveď od AI

Entity Framework (EF) je objektovo-relačný akcelerátor (ORM) pre .NET, ktorý umožňuje vývojárom pracovať s databázami pomocou objektov .NET, namiesto písania väčšiny kódu pre prístup k údajom. Prevodí LINQ dotazy na SQL a späť.

Hlavné komponenty a funkcie:

  • DbContext: Predstavuje reláciu s databázou, obsahuje DbSety pre entity.
  • DbSet: Predstavuje kolekciu entít určitého typu v kontexte.
  • LINQ to Entities: Umožňuje písanie dotazov na databázu pomocou syntaxe LINQ.
  • Migrácie (Code-First Migrations): Umožňujú správu zmien schémy databázy počas vývoja modelu dát v kóde.
  • Sledovanie zmien: EF automaticky sleduje zmeny vykonané v entitách načítaných z databázy a generuje príslušné SQL príkazy na uloženie týchto zmien.

Podporované prístupy vývoja:

  • Code-First: Definovanie modelu dát v kóde C# a generovanie schémy databázy na základe toho.
  • Database-First: Vytvorenie modelu .NET z existujúcej databázy.
  • Model-First: Vytvorenie grafického modelu v dizajnéri EF a generovanie ako kódu, tak aj schémy databázy. (Menej rozšírené v EF Core)

Výhody:

  • Zrýchlenie vývoja vďaka abstrakcii od detailov implementácie prístupu k dátam.
  • Silná typizácia a kontrola v čase kompilácie.
  • Pohodlné riadenie modelu dát a jeho zmien.

Príklad použitia EF Core (paradigma Code-First):

// Definícia modelu dát
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; }
}

// Definícia kontextu databázy
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Príklad konfigurácie pre SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Príklad použitia v kóde
// using (var context = new BloggingContext())
// {
//     // Pridanie dát
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Dotaz na dáta
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core je multiplatformová, ľahká a rozšíriteľná verzia Entity Framework, ktorá je odporúčaná pre nové aplikácie .NET.