Erste Schritte mit EF Core

In diesem Tutorial erstellen Sie eine .NET Core-Konsolen-App, die Datenzugriff auf eine SQLite-Datenbank mithilfe von Entity Framework Core ausführt.

Sie können das Tutorial mit Visual Studio unter Windows oder mithilfe von .NET Core-CLI unter Windows, MacOS oder Linux nachvollziehen.

Sehen Sie sich das Beispiel aus diesem Artikel auf GitHub an.

Voraussetzungen

Installieren Sie die folgenden Softwarekomponenten:

Erstellt ein neues Projekt

dotnet new console -o EFGetStarted
cd EFGetStarted

Installieren von Entity Framework Core

Installieren Sie das Paket für den (oder die) gewünschten EF Core-Datenbankanbieter, um EF Core zu installieren. In diesem Tutorial wird SQLite verwendet, da es auf allen Plattformen ausgeführt werden kann, die .NET Core unterstützt. Eine Liste der verfügbaren Anbieter finden Sie unter Datenbankanbieter.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Erstellen des Modells

Definieren Sie eine Kontextklasse und Entitätsklassen für das Modell.

  • Erstellen Sie im Projektverzeichnis die Datei Model.cs mit dem folgenden Code.
using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;

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

    public string DbPath { get; }

    public BloggingContext()
    {
        var folder = Environment.SpecialFolder.LocalApplicationData;
        var path = Environment.GetFolderPath(folder);
        DbPath = System.IO.Path.Join(path, "blogging.db");
    }

    // The following configures EF to create a Sqlite database file in the
    // special "local" folder for your platform.
    protected override void OnConfiguring(DbContextOptionsBuilder options)
        => options.UseSqlite($"Data Source={DbPath}");
}

public class Blog
{
    public int BlogId { get; set; }
    public string Url { get; set; }

    public List<Post> Posts { get; } = new();
}

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; }
}

EF Core kann auch Reverse Engineering eines Modells aus einer vorhandenen Datenbank ausführen.

Tipp: Bei dieser Anwendung wurden einige Vorgänge absichtlich vereinfacht, um mehr Klarheit zu bieten. Verbindungszeichenfolgen sollten bei Produktionsanwendungen niemals im Code gespeichert werden. Es empfiehlt sich auch, die C#-Klassen in eigene Dateien aufzuteilen.

Erstellen der Datenbank

Die folgenden Schritte verwenden Migrationen, um eine Datenbank zu erstellen.

  • Führen Sie die folgenden Befehle aus:

    dotnet tool install --global dotnet-ef
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

    Hierdurch werden dotnet ef und das Entwurfspaket installiert, das zum Ausführen des Befehls für ein Projekt erforderlich ist. Der Befehl migrations richtet per Gerüstbau eine Migration ein und erstellt den anfänglichen Tabellensatz für das Modell. Der Befehl database update erstellt die Datenbank und wendet die neue Migration auf sie an.

Erstellen, Lesen, Aktualisieren und Löschen

  • Öffnen Sie die Datei Program.cs, und ersetzen Sie den Inhalt durch den folgenden Code:

    using System;
    using System.Linq;
    
    using var db = new BloggingContext();
    
    // Note: This sample requires the database to be created before running.
    Console.WriteLine($"Database path: {db.DbPath}.");
    
    // Create
    Console.WriteLine("Inserting a new blog");
    db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
    db.SaveChanges();
    
    // Read
    Console.WriteLine("Querying for a blog");
    var blog = db.Blogs
        .OrderBy(b => b.BlogId)
        .First();
    
    // Update
    Console.WriteLine("Updating the blog and adding a post");
    blog.Url = "https://devblogs.microsoft.com/dotnet";
    blog.Posts.Add(
        new Post { Title = "Hello World", Content = "I wrote an app using EF Core!" });
    db.SaveChanges();
    
    // Delete
    Console.WriteLine("Delete the blog");
    db.Remove(blog);
    db.SaveChanges();
    

Ausführen der App

dotnet run

Nächste Schritte