Entity Framework in C#

Entity Framework

Einleitung zum Entity Framework in C#

Das Entity Framework ist ein sogenanntes ORM (Object-Relational Mapping) Framework für .NET-Anwendungen. In einfachen Worten: Es ermöglicht Entwicklern, Datenbanken mithilfe von C#-Code zu verwalten, anstatt direkt mit SQL zu arbeiten.

Wenn du wissen willst, wie du mit C# eine Verbindung zu einer SQL Datenbank ohne das Entity Framework herstellen kannst, dann schau dir mal diesen Beitrag dazu an.

Mit meinem kostenlosen Videokurs zu den Grundlagen von C# findest du den perfekten Einstieg in die Softwareentwicklung mit C#. Egal, ob du C# als Hobby, für die Uni oder für eine neue Karriere lernen möchtest, mit diesem Kurs lernst du C# schnell, einfach und professionell.
Mit meinem kostenlosen Videokurs zu den Grundlagen von C# findest du den perfekten Einstieg in die Softwareentwicklung mit C#.

In diesem Artikel werden wir uns damit beschäftigen, wie du das Entity Framework in einer .NET-Anwendung einrichten und verwenden kannst.

Was genau macht das Entity Framework?

Das Entity Framework (abgekürzt EF) erstellt automatisch eine Abstraktion der Datenbankstruktur in Form von Entitäten (engl. “entities”), die in C#-Code verwendet werden können. Das Entity Framework ermöglicht Entwicklern also, Datenbankabfragen auszuführen, Daten zu speichern und zu aktualisieren, ohne dass sie sich mit SQL-Abfragen auseinandersetzen müssen.

Entitäten-Beispiel: Wenn du Autos in einer Datenbank speicherst, dann ist die Auto Klasse die Entität (ganz einfach, oder?)

Merke: Mit dem Entity Framework kannst du Einträge ganz einfach ohne SQL (sondern mit C#) aus einer Datenbank lesen, speichern, verändern etc.

Wieso solltest du das Entity Framework verwenden?

Hier habe ich die wichtigsten Vorteile des Entity Frameworks für dich zusammengefasst:

  • Du musst dich nicht mehr mit der Verwaltung und Struktur deiner Datenbank auseinandersetzen
  • Du kannst produktiver arbeiten weil abfragen unkomplizierter und in C# eingebettet erstellt werden können
  • Die Automatisierungen, die das EF mit sich bringt, sparen dir viel Zeit (z.B. automatisch erstellen und anpassen deiner Datenbank Tabellen)

Die Verwendung vom Entity Framework in C# erspart dir zusammengefasst also Zeit und Kopfschmerzen im Umgang mit Datenbanken in deinen .NET Anwendungen.

Einrichtung des Entity Frameworks

Um das Entity Framework in einer .NET-Anwendung zu verwenden, musst du zunächst das Nuget-Paket <a href="https://www.nuget.org/packages/Microsoft.EntityFrameworkCore">Microsoft.EntityFrameworkCore</a> und auch das Microsoft.EntityFrameworkCore.InMemory installieren.

Anschließend kannst du mit dem Erstellen Ihrer Datenbankklasse beginnen. Diese Klasse vererbst du von der DbContext Klasse (die ist im EF enthalten), und gibst ihr alle gewünschten Datenbank Tabellen.

Die Klasse könnte folgendermaßen aussehen (ich habe zusätzlich noch die Auto Klasse als Entität hinzugefügt):

public class Car {

   public string Name { get; set; }

   public float MaxSpeed{ get; set; }

   public int Wheels { get; set; }

}
using Microsoft.EntityFrameworkCore;

public class MyDbContext : DbContext
{
    // Hier erstellen wir die Tabelle
    public DbSet<Car> Cars { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        // Dein Datenbank Connection String
        optionsBuilder.UseInMemoryDatabase(databaseName: "MyDb");  
    }
}

In diesem Beispiel erbt die MyDbContext-Klasse also von der DbContext-Klasse und enthält eine Eigenschaft “Car” vom Typ DbSet, die der Tabelle “Cars” in der Datenbank entspricht.

In der Methode OnConfiguring wird die Verbindung zur InMemory-Datenbank konfiguriert (eine Datenbank die nur während der Laufzeit im Arbeitsspeicher existiert).

Verwendung des Entity Frameworks in C#

Nachdem du die Datenbankklasse erstellt hast, kannst du damit auf deine Datenbank zugreifen und Abfragen ausführen.

Beispielsweise kannst du mit der Methode Add ein neues Objekt der Entität hinzufügen, die der Tabelle entspricht, und die Methode SaveChanges aufrufen, um die Änderungen in der Datenbank zu speichern.

Merke: Du musst die SaveChanges Methode immer aufrufen, wenn du ein Objekt in deiner Datenbank hinzufügst, veränderst oder löschst. Die Veränderungen werden sonst verworfen.

Du kannst auch Abfragen mit der Methode Where und Select ausführen, um bestimmte Datensätze aus der Tabelle zu erhalten.

Häufig verwendest du Entity Frame in ASP.NET Anwendungen. in diesem Fall kannst du die Datenbank einfach als Service konfigurieren. In diesem Artikel gehen wir nicht aus ASP.NET ein, daher erstellen wir einen Scope mit using und verwenden darin den Context.

Wenn du wissen willst, wieso du unbedingt ASP.NET lernen solltest, dann lies dir diesen Artikel dazu durch.

using (var context = new MyDbContext())
{
    var car = new Car { Name = "Mercedes", MaxSpeed = 240f, Wheels = 4 };

    context.Cars.Add(car); // Wir fügen der Tabelle das Auto hinzu

    context.SaveChanges(); // Wir speichern die Änderungen
}

Natürlich gibt es noch weitere Methoden um verschiedene Aktionen und Abfragen durchzuführen. Hier sind ein paar davon:

// Einen Datenbankeintrag hinzufügen
context.Cars.Add(car); 

// Einen Datenbankeintrag entfernen
context.Cars.Remove(car); 

// Einen bestehen Datenbankeintrag updaten
context.Cars.Update(car); 

// Gibt alle Mercedes zurück
var allMercedes = context.Cars.Where(c => c.Name == "Mercedes");

// Gibt den ersten gefunden Mercedes zurück
var mercedes = context.Cars.FirstOrDefault(c => c.Name == "Mercedes"); 

Es gibt noch einige weitere aber du solltest nun eine gute Vorstellung davon haben, was du mit dem EF in C# anstellen kannst du wie du es einrichtest.

✅ Lerne alle Grundlagen der C# Programmierung ✅ Der ideale Einstieg in die Softwareentwicklung ✅ 30+ HD Videolektionen ✅ Komplett kostenlos ✅ Sofortiger Zugriff
Der C# Grundlagenkurs
Kostenlos
Overlay Image
Der C# Grundlagenkurs
Kostenlos
✅ Alle Grundlagen der C# Programmierung ✅ Der ideale Einstieg in die Entwicklung ✅ 30+ HD Videolektionen ✅ Komplett kostenlos ✅ Sofortiger Zugriff
Overlay Image