Entity Framework Core für C# (.NET): Vollständiger Leitfaden mit Beispielen

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Was ist Entity Framework Core und wozu wird es benötigt

\n

Entity Framework Core (EF Core) ist eine moderne objektrelationale Abbildung (ORM) für die .NET-Plattform, entwickelt von Microsoft. Sie ermöglicht Entwicklern die Arbeit mit Datenbanken unter Verwendung von .NET-Objekten und erspart das Schreiben des Großteils des Datenzugriffscodes.

\n\n

EF Core ist eine leichte, erweiterbare und plattformübergreifende Version von Entity Framework. Es unterstützt zahlreiche DBMS, darunter SQL Server, SQLite, PostgreSQL, MySQL, Oracle und andere.

\n\n

Hauptfunktionen von EF Core:

\n
    \n
  • Automatische Erstellung und Aktualisierung des Datenbankschemas basierend auf dem Modell (Code First)
  • \n
  • Ausführung von Datenbankabfragen mit LINQ (Language Integrated Query)
  • \n
  • Automatische Nachverfolgung von Objektänderungen und Generierung von SQL-Befehlen zur Datenaktualisierung
  • \n
  • Unterstützung von Migrationen zur Verwaltung von Schemaänderungen der Datenbank
  • \n
  • Unterstützung von Beziehungen zwischen Entitäten (eins-zu-eins, eins-zu-viele, viele-zu-viele)
  • \n
  • Lazy Loading, Eager Loading und explizites Laden von zugehörigen Daten
  • \n
\n\n

Installation von Entity Framework Core

\n

Die Installation von EF Core erfolgt über den NuGet Package Manager. Anders als bei Python wird hier dotnet add package oder der Visual Studio-Paketmanager verwendet.

\n\n

Installation über die .NET CLI:

\n
dotnet add package Microsoft.EntityFrameworkCore\ndotnet add package Microsoft.EntityFrameworkCore.SqlServer\ndotnet add package Microsoft.EntityFrameworkCore.Tools
\n\n

Installation für PostgreSQL (Npgsql):

\n
dotnet add package Npgsql.EntityFrameworkCore.PostgreSQL
\n\n

Installation für SQLite:

\n
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
\n\n

Installation für MySQL:

\n
dotnet add package Pomelo.EntityFrameworkCore.MySql
\n\n

Schnellstart mit einem Codebeispiel

\n

Wir erstellen eine einfache Konsolenanwendung für die Arbeit mit einer Buchdatenbank.

\n\n

1. Datenmodell erstellen:

\n
public class Book\n{\n    public int Id { get; set; }\n    public string Title { get; set; }\n    public string Author { get; set; }\n    public int Year { get; set; }\n    public decimal Price { get; set; }\n}\n\npublic class Author\n{\n    public int Id { get; set; }\n    public string Name { get; set; }\n    public List<Book> Books { get; set; } = new();\n}
\n\n

2. Datenbankkontext erstellen:

\n
public class LibraryContext : DbContext\n{\n    public DbSet<Book> Books { get; set; }\n    public DbSet<Author> Authors { get; set; }\n\n    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)\n    {\n        optionsBuilder.UseSqlite("Data Source=library.db");\n    }\n}
\n\n

3. EF Core zur Datenverarbeitung verwenden:

\n
using var context = new LibraryContext();\ncontext.Database.EnsureCreated(); // Datenbank erstellen, falls nicht vorhanden\n\n// Daten hinzufügen\nvar author = new Author { Name = "Leo Tolstoi" };\nauthor.Books.Add(new Book { Title = "Krieg und Frieden", Year = 1869, Price = 1500m });\nauthor.Books.Add(new Book { Title = "Anna Karenina", Year = 1877, Price = 1200m });\n\ncontext.Authors.Add(author);\ncontext.SaveChanges();\n\n// Daten lesen\nvar books = context.Books\n    .Where(b => b.Year > 1850)\n    .OrderBy(b => b.Year)\n    .ToList();\n\nforeach (var book in books)\n{\n    Console.WriteLine($"{book.Title} ({book.Year})");\n}
\n\n

Wichtige Methoden und Funktionen von Entity Framework Core

\n\n

1. Add

\n

Beschreibung: Fügt eine neue Entität im Status Added zum Kontext hinzu. Beim Aufruf von SaveChanges() wird ein INSERT-Befehl ausgeführt.

\n

Parameter:

\n
    \n
  • object entity

Empfehlungen