Wprowadzenie do nowej bazy danych z programem EF Core w aplikacji Konsolowej .NET CoreGetting Started with EF Core on .NET Core Console App with a New database

W tym samouczku utworzysz aplikację konsoli .NET Core, która wykonuje dostęp do danych w bazie danych SQLite przy użyciu platformy Entity Framework Core.In this tutorial, you create a .NET Core console app that performs data access against a SQLite database using Entity Framework Core. Migracje umożliwia tworzenie bazy danych z modelu.You use migrations to create the database from the model. Zobacz ASP.NET Core — Nowa baza danych dla wersji programu Visual Studio przy użyciu platformy ASP.NET Core MVC.See ASP.NET Core - New database for a Visual Studio version using ASP.NET Core MVC.

Wyświetlanie przykładowych w tym artykule w witrynie GitHub.View this article's sample on GitHub.

Wymagania wstępnePrerequisites

Tworzenie nowego projektuCreate a new project

  • Utwórz nowy projekt konsoli:Create a new console project:

    dotnet new console -o ConsoleApp.SQLite
    

Zmień bieżący katalogChange the current directory

W kolejnych krokach samouczka, należy wydać dotnet poleceń dla aplikacji.In subsequent steps, we need to issue dotnet commands against the application.

  • Możemy zmienić bieżący katalog do katalogu aplikacji w następujący sposób:We change the current directory to the application's directory like this:

    cd ConsoleApp.SQLite/
    

Instalowanie platformy Entity Framework CoreInstall Entity Framework Core

Aby korzystać z programu EF Core, należy zainstalować pakiet dla dostawców bazy danych, który ma pod kątem.To use EF Core, install the package for the database provider(s) you want to target. W tym instruktażu wykorzystano bazy danych SQLite.This walkthrough uses SQLite. Aby uzyskać listę dostępnych dostawców zobacz dostawcy baz danych.For a list of available providers see Database Providers.

  • Zainstaluj Microsoft.EntityFrameworkCore.Sqlite i Microsoft.EntityFrameworkCore.DesignInstall Microsoft.EntityFrameworkCore.Sqlite and Microsoft.EntityFrameworkCore.Design

    dotnet add package Microsoft.EntityFrameworkCore.Sqlite
    dotnet add package Microsoft.EntityFrameworkCore.Design
    
  • Uruchom dotnet restore zainstalować nowe pakiety.Run dotnet restore to install the new packages.

Tworzenie modeluCreate the model

Definiowanie klas jednostek i kontekstu, które tworzą model.Define a context and entity classes that make up your model.

  • Utwórz nową Model.cs pliku o następującej zawartości.Create a new Model.cs file with the following contents.

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace ConsoleApp.SQLite
    {
        public class BloggingContext : DbContext
        {
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
    
            protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
            {
                optionsBuilder.UseSqlite("Data Source=blogging.db");
            }
        }
    
        public class Blog
        {
            public int BlogId { get; set; }
            public string Url { get; set; }
    
            public ICollection<Post> Posts { get; set; }
        }
    
        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; }
        }
    }
    

Porada: W rzeczywistej aplikacji, możesz umieścić każda klasa w oddzielnym pliku, a parametry połączenia w zmiennej środowisku lub pliku konfiguracji.Tip: In a real application, you put each class in a separate file and put the connection string in a configuration file or environment variable. W celu uproszczenia tego samouczka wszystko, co znajduje się w jednym pliku.To keep the tutorial simple, everything is contained in one file.

Tworzenie bazy danychCreate the database

Po utworzeniu modelu, użyj migracje utworzyć bazę danych.Once you have a model, you use migrations to create a database.

  • Uruchom dotnet ef migrations add InitialCreate tworzenia szkieletu migracji i utworzyć początkowy zestaw tabel dla modelu.Run dotnet ef migrations add InitialCreate to scaffold a migration and create the initial set of tables for the model.
  • Uruchom dotnet ef database update zastosować nową migrację do bazy danych.Run dotnet ef database update to apply the new migration to the database. To polecenie tworzy bazę danych przed zastosowaniem migracji.This command creates the database before applying migrations.

Blogging.db* bazy danych SQLite znajduje się w katalogu projektu.The blogging.db* SQLite DB is in the project directory.

Użyj modeluUse the model

  • Otwórz Program.cs i zastąp jego zawartość następującym kodem:Open Program.cs and replace the contents with the following code:

    using System;
    
    namespace ConsoleApp.SQLite
    {
        public class Program
        {
            public static void Main()
            {
                using (var db = new BloggingContext())
                {
                    db.Blogs.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                    var count = db.SaveChanges();
                    Console.WriteLine("{0} records saved to database", count);
    
                    Console.WriteLine();
                    Console.WriteLine("All blogs in database:");
                    foreach (var blog in db.Blogs)
                    {
                        Console.WriteLine(" - {0}", blog.Url);
                    }
                }
            }
        }
    }
    
  • Testowanie aplikacji z konsoli.Test the app from the console. Zobacz Uwaga programu Visual Studio do uruchomienia aplikacji w programie Visual Studio.See the Visual Studio note to run the app from Visual Studio.

    dotnet run

    Blog jeden jest zapisywany w bazie danych i szczegółowe informacje o wszystkich blogów są wyświetlane w konsoli.One blog is saved to the database and the details of all blogs are displayed in the console.

    ConsoleApp.SQLite>dotnet run
    1 records saved to database
    
    All blogs in database:
    - http://blogs.msdn.com/adonet
    

Zmiana modelu:Changing the model:

  • Jeśli wprowadzisz zmiany w modelu, można użyć dotnet ef migrations add polecenie, aby utworzyć szkielet nowego migracji.If you make changes to the model, you can use the dotnet ef migrations add command to scaffold a new migration. Po zaznaczeniu tej opcji utworzony szkielet kodu (i wprowadzone wymagane zmiany), można użyć dotnet ef database update polecenie, aby zastosować schemat zmienia się z bazą danych.Once you have checked the scaffolded code (and made any required changes), you can use the dotnet ef database update command to apply the schema changes to the database.
  • Używa programu EF Core __EFMigrationsHistory tabeli w bazie danych, aby śledzić migracje, które zostały już zastosowane do bazy danych.EF Core uses a __EFMigrationsHistory table in the database to keep track of which migrations have already been applied to the database.
  • Aparat bazy danych SQLite nie obsługuje niektórych zmiany schematu, które są obsługiwane w większości innych relacyjnych baz danych.The SQLite database engine doesn't support certain schema changes that are supported by most other relational databases. Na przykład DropColumn operacja nie jest obsługiwana.For example, the DropColumn operation is not supported. EF Core migracji wygeneruje kod dla tych operacji.EF Core Migrations will generate code for these operations. Ale Jeśli spróbujesz zastosować je do bazy danych lub wygenerować skrypt programu EF Core zgłasza wyjątek wyjątków.But if you try to apply them to a database or generate a script, EF Core throws exceptions. Zobacz ograniczenia SQLite.See SQLite Limitations. W nowych wdrożeniach należy wziąć pod uwagę porzucenie bazy danych i tworzenia nowej, a nie przy użyciu migracji po zmianie modelu.For new development, consider dropping the database and creating a new one rather than using migrations when the model changes.

Uruchamianie z programu Visual StudioRun from Visual Studio

Aby uruchomić ten przykład z programu Visual Studio, należy ustawić katalogu roboczego ręcznie, aby być w katalogu głównym projektu.To run this sample from Visual Studio, you must set the working directory manually to be the root of the project. Jeśli nie ustawisz katalogu roboczego następujące Microsoft.Data.Sqlite.SqliteException zgłaszany: SQLite Error 1: 'no such table: Blogs'.If you don't set the working directory, the following Microsoft.Data.Sqlite.SqliteException is thrown: SQLite Error 1: 'no such table: Blogs'.

Aby ustawić katalog roboczy:To set the working directory:

  • W Eksploratora rozwiązań, kliknij prawym przyciskiem myszy projekt, a następnie wybierz właściwości.In Solution Explorer, right click the project and then select Properties.
  • Wybierz debugowania karty w okienku po lewej stronie.Select the Debug tab in the left pane.
  • Ustaw katalog roboczy do katalogu projektu.Set Working directory to the project directory.
  • Zapisz zmiany.Save the changes.

Dodatkowe zasobyAdditional Resources