Sobes.tech
Junior

Ce este Entity Framework?

sobes.tech AI

Răspuns de la AI

Entity Framework (EF) este un accelerator obiect-relațional (ORM) pentru .NET, care permite dezvoltatorilor să lucreze cu baze de date folosind obiecte .NET, în loc să scrie cea mai mare parte a codului de acces la date. Transformă interogările LINQ în SQL și invers.

Componente principale și funcționalități:

  • DbContext: Reprezintă o sesiune de lucru cu baza de date, include DbSet-uri pentru entități.
  • DbSet: Reprezintă o colecție de entități de un anumit tip în context.
  • LINQ to Entities: Permite scrierea de interogări către baza de date folosind sintaxa LINQ.
  • Migrații (Code-First Migrations): Permite gestionarea modificărilor schemei bazei de date pe măsură ce modelul de date evoluează în cod.
  • Urmărirea modificărilor: EF urmărește automat modificările făcute entităților încărcate din baza de date și generează comenzile SQL corespunzătoare pentru a salva aceste modificări.

Abordări de dezvoltare suportate:

  • Code-First: Definirea modelului de date în codul C# și generarea schemei bazei de date pe baza acestuia.
  • Database-First: Crearea modelului .NET dintr-o bază de date existentă.
  • Model-First: Crearea unui model grafic în designerul EF și generarea atât a codului, cât și a schemei bazei de date. (Mai puțin comun în EF Core)

Avantaje:

  • Accelerarea dezvoltării prin abstractizarea detaliilor de implementare a accesului la date.
  • Tipizare puternică și verificare în timpul compilării.
  • Gestionare convenabilă a modelului de date și a modificărilor sale.

Exemplu de utilizare EF Core (paradigma Code-First):

// Definirea modelului de date
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; }
}

// Definirea contextului bazei de date
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Exemplu de configurare pentru SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Exemplu de utilizare în cod
// using (var context = new BloggingContext())
// {
//     // Adăugare date
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Interogare date
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core este o versiune multiplatformă, ușoară și extensibilă a Entity Framework, recomandată pentru noile aplicații .NET.