Sobes.tech
Junior

Šta je Entity Framework?

sobes.tech АИ

Одговор од АИ

Entity Framework (EF) je objektno-relejioni akcelerator (ORM) za .NET, koji omogućava programerima da rade sa bazama podataka koristeći .NET objekte, a ne da pišu većinu koda za pristup podacima. On pretvara LINQ upite u SQL i nazad.

Glavne komponente i mogućnosti:

  • DbContext: Predstavlja sesiju rada sa bazom podataka, uključuje DbSet-ove za entitete.
  • DbSet: Predstavlja kolekciju entiteta određenog tipa u kontekstu.
  • LINQ to Entities: Omogućava pisanje upita ka bazi podataka koristeći sintaksu LINQ.
  • Migracije (Code-First Migrations): Omogućavaju upravljanje promenama šeme baze podataka tokom razvoja modela podataka u kodu.
  • Praćenje promena: EF automatski prati promene napravljene u entitetima učitanim iz baze podataka i generiše odgovarajuće SQL komande za čuvanje tih promena.

Podržani pristupi razvoja:

  • Code-First: Definisanje modela podataka u C# kodu i generisanje šeme baze podataka na osnovu toga.
  • Database-First: Kreiranje modela .NET iz postojeće baze podataka.
  • Model-First: Kreiranje grafičkog modela u EF dizajneru i generisanje kako koda, tako i šeme baze podataka. (Manje uobičajeno u EF Core)

Prednosti:

  • Ubrzanje razvoja zahvaljujući apstrakciji od detalja implementacije pristupa podacima.
  • Snažna tipizacija i provera u fazi kompilacije.
  • Prijatno upravljanje modelom podataka i njegovim promenama.

Primer korišćenja EF Core (paradigma Code-First):

// Definisanje modela podataka
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; }
}

// Definisanje konteksta baze podataka
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Primer konfiguracije za SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Primer korišćenja u kodu
// using (var context = new BloggingContext())
// {
//     // Dodavanje podataka
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Upit podataka
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core je multiplatformska, lagana i proširiva verzija Entity Framework-a, koja je preporučena za nove aplikacije .NET.