Wprowadzenie do programu EF Core

W tym samouczku utworzysz aplikację konsolową platformy .NET Core, która wykonuje dostęp do danych względem bazy danych SQLite przy użyciu platformy Entity Framework Core.

Możesz skorzystać z samouczka przy użyciu programu Visual Studio w systemie Windows lub interfejsu wiersza polecenia platformy .NET w systemach Windows, macOS lub Linux.

Zapoznaj się z przykładem tego artykułu w witrynie GitHub.

Wymagania wstępne

Zainstaluj następujące oprogramowanie:

Tworzenie nowego projektu

dotnet new console -o EFGetStarted
cd EFGetStarted

Instalowanie programu Entity Framework Core

Aby zainstalować program EF Core, należy zainstalować pakiet dla dostawców baz danych EF Core, których chcesz użyć. W tym samouczku jest używana funkcja SQLite, ponieważ jest ona uruchamiana na wszystkich platformach, które obsługuje platforma .NET. Aby uzyskać listę dostępnych dostawców, zobacz Dostawcy baz danych.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

Tworzenie modelu

Zdefiniuj klasę kontekstu i klasy jednostek tworzące model.

  • W katalogu projektu utwórz plik Model.cs przy użyciu następującego kodu
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; }
}

Program EF Core może również odtworzyć model z istniejącej bazy danych.

Porada: Ta aplikacja celowo zachowuje prostotę w celu zapewnienia przejrzystości. ciągi Połączenie ion nie powinny być przechowywane w kodzie dla aplikacji produkcyjnych. Możesz również podzielić każdą klasę języka C# na własny plik.

Tworzenie bazy danych

W poniższych krokach są używane migracje do tworzenia bazy danych.

  • Uruchom następujące polecenia:

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

    Spowoduje to zainstalowanie narzędzia dotnet ef i pakietu projektowego wymaganego do uruchomienia polecenia w projekcie. Polecenie migrations tworzy szkielet migracji w celu utworzenia początkowego zestawu tabel dla modelu. Polecenie database update tworzy bazę danych i stosuje do niej nową migrację.

Tworzenie, odczytywanie, aktualizowanie i usuwanie

  • Otwórz plik Program.cs i zastąp zawartość następującym kodem:

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

Uruchom aplikację

dotnet run

Następne kroki