Freigeben über


Erste Schritte mit EF Core

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

Sie können das Lernprogramm mithilfe von Visual Studio unter Windows oder mithilfe der .NET CLI unter Windows, macOS oder Linux befolgen.

Sehen Sie sich das Beispiel dieses Artikels auf GitHub an.

Voraussetzungen

Installieren Sie die folgende Software:

Erstellen eines neuen Projekts

dotnet new console -o EFGetStarted
cd EFGetStarted

Installieren von Entity Framework Core

Um EF Core zu installieren, installieren Sie das Paket für den EF Core-Datenbankanbieter(n), auf den Sie abzielen möchten. In diesem Lernprogramm wird SQLite verwendet, da es auf allen Plattformen ausgeführt wird, die .NET 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, aus denen das Modell besteht.

  • Erstellen Sie im Projektverzeichnis 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 ein Modell aus einer vorhandenen Datenbank rückentwickeln.

Tipp: Diese Anwendung behält die Dinge absichtlich einfach zur Übersichtlichkeit bei. Verbindungszeichenfolgen sollten nicht im Code für Produktionsanwendungen gespeichert werden. Sie können auch jede C#-Klasse in eine eigene Datei aufteilen.

Erstellen der Datenbank

Die folgenden Schritte verwenden Migrationen zum Erstellen einer Datenbank.

  • 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
    

    Dadurch werden dotnet ef und das Designpaket installiert, das zum Ausführen des Befehls für ein Projekt erforderlich ist. Der migrations Befehl erstellt ein Gerüst für eine Migration, um die anfängliche Gruppe von Tabellen für das Modell zu erstellen. Der database update Befehl erstellt die Datenbank und wendet die neue Migration darauf an.

Erstellen, Lesen, Aktualisieren & Löschen

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

    using System;
    using System.Linq;
    using Microsoft.EntityFrameworkCore;
    
    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" });
    await db.SaveChangesAsync();
    
    // Read
    Console.WriteLine("Querying for a blog");
    var blog = await db.Blogs
        .OrderBy(b => b.BlogId)
        .FirstAsync();
    
    // 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!" });
    await db.SaveChangesAsync();
    
    // Delete
    Console.WriteLine("Delete the blog");
    db.Remove(blog);
    await db.SaveChangesAsync();
    

App starten

dotnet run

Nächste Schritte