Sobes.tech
Junior

Czym jest Entity Framework?

sobes.tech AI

Odpowiedź od AI

Entity Framework (EF) to obiektowo-relacyjny akcelerator (ORM) dla .NET, który umożliwia programistom pracę z bazami danych za pomocą obiektów .NET, a nie pisanie dużej części kodu dostępu do danych. Konwertuje zapytania LINQ na SQL i odwrotnie.

Główne komponenty i funkcje:

  • DbContext: Reprezentuje sesję pracy z bazą danych, zawiera DbSet dla encji.
  • DbSet: Reprezentuje kolekcję encji określonego typu w kontekście.
  • LINQ to Entities: Pozwala pisać zapytania do bazy danych z użyciem składni LINQ.
  • Migracje (Code-First Migrations): Umożliwiają zarządzanie zmianami schematu bazy danych w miarę rozwoju modelu danych w kodzie.
  • Śledzenie zmian: EF automatycznie śledzi zmiany w encjach załadowanych z bazy danych i generuje odpowiednie polecenia SQL do zapisania tych zmian.

Obsługiwane podejścia rozwoju:

  • Code-First: Definiowanie modelu danych w kodzie C# i generowanie schematu bazy danych na jego podstawie.
  • Database-First: Tworzenie modelu .NET z istniejącej bazy danych.
  • Model-First: Tworzenie graficznego modelu w projektancie EF i generowanie zarówno kodu, jak i schematu bazy danych. (Mniej popularne w EF Core)

Zalety:

  • Przyspieszenie rozwoju dzięki abstrakcji od szczegółów implementacji dostępu do danych.
  • Silne typowanie i sprawdzanie na etapie kompilacji.
  • Wygodne zarządzanie modelem danych i jego zmianami.

Przykład użycia EF Core (paradygmat Code-First):

// Definicja modelu danych
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; }
}

// Definicja kontekstu bazy danych
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Przykład konfiguracji dla SQLite
        optionsBuilder.UseSqlite("Data Source=blogging.db");
    }
}

// Przykład użycia w kodzie
// using (var context = new BloggingContext())
// {
//     // Dodanie danych
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Zapytanie danych
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core to wieloplatformowa, lekka i rozszerzalna wersja Entity Framework, zalecana dla nowych aplikacji .NET.