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 instruktażu 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 walkthrough, 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.

Porada

Można wyświetlić w tym artykule przykładowe w witrynie GitHub.You can view this article's sample on GitHub.

Wymagania wstępnePrerequisites

.NET Core SDK 2.1The .NET Core SDK 2.1

Tworzenie nowego projektuCreate a new project

  • Utwórz nowy projekt konsoli:Create a new console project:
dotnet new console -o ConsoleApp.SQLite
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 List<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 pliku konfiguracji.Tip: In a real application, you put each class in a separate file and put the connection string in a configuration file. 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 your 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:Test the app:

    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:

  • W przypadku wprowadzenia zmian do modelu, można użyć dotnet ef migrations add polecenie, aby utworzyć szkielet nowego migracji się odpowiedni schemat zmienia się z bazą danych.If you make changes to your model, you can use the dotnet ef migrations add command to scaffold a new migration to make the corresponding schema changes to the database. Po zaznaczeniu tej opcji utworzony szkielet kodu (i wprowadzone wymagane zmiany), można użyć dotnet ef database update polecenie, aby zastosować zmiany do bazy 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 changes to the database.
  • Używa EF __EFMigrationsHistory tabeli w bazie danych, aby śledzić migracje, które zostały już zastosowane do bazy danych.EF uses a __EFMigrationsHistory table in the database to keep track of which migrations have already been applied to the database.
  • Bazy danych SQLite nie obsługuje wszystkich migracji (zmiany schematu) ze względu na ograniczenia w bazy danych SQLite.SQLite does not support all migrations (schema changes) due to limitations in SQLite. 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 your model changes.

Dodatkowe zasobyAdditional Resources