Sobes.tech
Junior

Wat is Entity Framework?

sobes.tech AI

Antwoord van AI

Entity Framework (EF) is een object-relationele mapper (ORM) voor .NET die ontwikkelaars in staat stelt om met databases te werken door gebruik te maken van .NET-objecten in plaats van het schrijven van het grootste deel van de gegevenstoegangscode. Het converteert LINQ-query's naar SQL en vice versa.

Belangrijkste componenten en functies:

  • DbContext: Vertegenwoordigt een sessie van werken met de database, bevat DbSet's voor entiteiten.
  • DbSet: Vertegenwoordigt een collectie van entiteiten van een bepaald type in de context.
  • LINQ to Entities: Maakt het mogelijk om queries naar de database te schrijven met behulp van LINQ-syntaxis.
  • Migraties (Code-First Migrations): Helpt bij het beheren van schemawijzigingen in de database naarmate het datamodel evolueert in de code.
  • Wijzigingen volgen: EF volgt automatisch de wijzigingen aangebracht in geladen entiteiten en genereert de juiste SQL-commando's om deze op te slaan.

Ondersteunde ontwikkelingsbenaderingen:

  • Code-First: Definieer het datamodel in C#-code en genereer het databasemodel op basis hiervan.
  • Database-First: Maak een .NET-model van een bestaande database.
  • Model-First: Maak een grafisch model in de EF-designer en genereer zowel de code als het databasemodel. (Minder gebruikelijk in EF Core)

Voordelen:

  • Versnelt de ontwikkeling door abstractie van de details van gegevenstoegang.
  • Sterke typing en compile-tijd verificatie.
  • Gemakkelijk beheer van het datamodel en wijzigingen.

Voorbeeld van gebruik van EF Core (Code-First paradigma):

// Definieer het datamodel
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; }
}

// Definieer de databasecontext
public class BloggingContext : DbContext
{
    public DbSet<Blog> Blogs { get; set; }
    public DbSet<Post> Posts { get; set; }

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

// Gebruik in code
// using (var context = new BloggingContext())
// {
//     // Voeg data toe
//     context.Blogs.Add(new Blog { Url = "http://example.com/blog" });
//     context.SaveChanges();
//
//     // Query data
//     var blog = context.Blogs
//         .OrderBy(b => b.BlogId)
//         .First();
// }

EF Core is een cross-platform, lichtgewicht en uitbreidbare versie van Entity Framework, aanbevolen voor nieuwe .NET-toepassingen.