Wird geladen...

Einführung in Entity Framework Core in C#

Lernen Sie die Grundlagen von Entity Framework Core in C#, einschließlich DbContext und Datenbankoperationen.

Entity Framework Core (EF Core) ist ein objekt-relationaler Mapper (ORM) im .NET-Ökosystem, mit dem Datenbankoperationen objektorientiert durchgeführt werden können. Mit EF Core lassen sich Datenbanktabellen über C#-Klassen verwalten, ohne rohe SQL-Abfragen schreiben zu müssen. In diesem Artikel behandeln wir die Grundlagen von EF Core, einschließlich DbContext, Entity-Definitionen und grundlegenden CRUD-Operationen. (Wir gehen nicht speziell auf MS-SQL ein, sondern beschreiben den allgemeinen EF-Core-Ansatz.)


Vorteile von EF Core


Entity definieren

In EF Core wird eine Datenbanktabelle in der Regel durch eine C#-Klasse dargestellt. Die Eigenschaften der Klasse werden den Tabellenspalten zugeordnet.


public class Product
{
    public int Id { get; set; }      // Primärschlüssel
    public string Name { get; set; } = string.Empty;
    public decimal Price { get; set; }
}

Die DbContext-Klasse

DbContext ist das Herzstück von EF Core. Sie verwaltet die Datenbankverbindung und die Interaktion mit den Tabellen.


using Microsoft.EntityFrameworkCore;

public class AppDbContext : DbContext
{
    public DbSet<Product> Products { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Datenbankanbieter hier konfigurieren
        optionsBuilder.UseInMemoryDatabase("TestDb");
    }
}

Hinweis: In diesem Beispiel wird zur Vereinfachung InMemoryDatabase verwendet.


Grundlegende CRUD-Operationen

Mit EF Core können Create, Read, Update, Delete-Operationen einfach ausgeführt werden.


using (var db = new AppDbContext())
{
    // CREATE
    db.Products.Add(new Product { Name = "Laptop", Price = 1500 });
    db.SaveChanges();

    // READ
    var products = db.Products.ToList();
    foreach (var p in products)
        Console.WriteLine($"{p.Id} - {p.Name} - {p.Price}");

    // UPDATE
    var product = db.Products.First();
    product.Price = 1400;
    db.SaveChanges();

    // DELETE
    db.Products.Remove(product);
    db.SaveChanges();
}

Abfragen mit LINQ

EF Core arbeitet nahtlos mit LINQ (Language Integrated Query) zusammen. Dadurch können starke, typsichere Abfragen ohne SQL geschrieben werden.


// Produkte auswählen, die teurer als 1000 sind
using (var db = new AppDbContext())
{
    var expensive = db.Products
                      .Where(p => p.Price > 1000)
                      .OrderBy(p => p.Name);

    foreach (var item in expensive)
        Console.WriteLine(item.Name);
}

Das Konzept der Migrationen

EF Core bietet Migrationen, um das Datenbankschema direkt aus dem Code zu erstellen oder zu aktualisieren. Änderungen im Code werden nachverfolgt und mit Migrationen in die Datenbank übernommen.


// Beispielbefehle (über CLI auszuführen)
// dotnet ef migrations add InitialCreate
// dotnet ef database update

Kurz & Knapp

  • EF Core vereinfacht Datenbankoperationen mit dem ORM-Ansatz.
  • DbContext: Verwaltet die Datenbankverbindung und Tabellen.
  • Entity: C#-Klassen, die Tabellen repräsentieren.
  • CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) sind einfach umsetzbar.
  • LINQ ermöglicht typsichere Abfragen.
  • Migrationen erlauben die Verwaltung des Datenbankschemas direkt aus dem Code.

Ähnliche Artikel