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 CLI unter Windows, MacOS oder Linux nachvollziehen.
Sehen Sie sich das Beispiel aus diesem Artikel 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
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 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 Befehldatabase update
erstellt die Datenbank und wendet die neue Migration auf sie an.
Erstellen, Lesen, Aktualisieren und Löschen
Öffnen Sie 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
- Befolgen Sie das ASP.NET Core-Tutorial, um EF Core in einer Web-App zu verwenden.
- Weitere Informationen zu LINQ-Abfrageausdrücken
- Konfigurieren Sie das Modell, um Aspekte wie required (erforderlich) und maximum length (maximale Länge) anzugeben.
- Verwenden Sie Migrationen zum Aktualisieren des Datenbankschemas nach dem Ändern des Modells.