Začínáme s EF Core

V tomto kurzu vytvoříte konzolovou aplikaci .NET Core, která provádí přístup k datům z databáze SQLite pomocí Entity Framework Core.

Kurz můžete sledovat pomocí sady Visual Studio ve Windows nebo pomocí .NET CLI ve Windows, macOS nebo Linuxu.

Podívejte se na ukázku tohoto článku na GitHubu.

Požadavky

Nainstalujte následující software:

Vytvoření nového projektu

dotnet new console -o EFGetStarted
cd EFGetStarted

Instalace Entity Framework Core

Pokud chcete nainstalovat EF Core, nainstalujete balíček pro poskytovatele databází EF Core, na které chcete cílit. Tento kurz používá SQLite, protože běží na všech platformách, které .NET podporuje. Seznam dostupných poskytovatelů najdete v tématu Zprostředkovatelé databáze.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Vytvoření modelu

Definujte třídu kontextu a třídy entit, které tvoří model.

  • V adresáři projektu vytvořte Model.cs s následujícím kódem.
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 může také zpětně analyzovat model z existující databáze.

Tip: Tato aplikace záměrně udržuje věci jednoduché pro přehlednost. Připojení řetězce by neměly být uloženy v kódu pro produkční aplikace. Můžete také chtít rozdělit jednotlivé třídy jazyka C# do vlastního souboru.

Vytvoření databáze

Následující kroky používají migrace k vytvoření databáze.

  • Spusťte následující příkazy:

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

    Tím se nainstaluje dotnet ef a balíček návrhu, který je nutný ke spuštění příkazu v projektu. Příkaz migrations vygeneruje migraci, která vytvoří počáteční sadu tabulek pro model. Příkaz database update vytvoří databázi a použije na ni novou migraci.

Vytvoření, čtení, aktualizace a odstranění

  • Otevřete Program.cs a nahraďte obsah následujícím kódem:

    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();
    

Spustit aplikaci

dotnet run

Další kroky