Wprowadzenie do programu EF Core programu ASP.NET Core przy użyciu nowej bazy danychGetting Started with EF Core on ASP.NET Core with a New database

W tym samouczku utworzysz aplikację ASP.NET Core MVC, który wykonuje podstawowe dane dostępu przy użyciu platformy Entity Framework Core.In this tutorial, you build an ASP.NET Core MVC application that performs basic data access using Entity Framework Core. W samouczku migracje utworzyć bazę danych z modelu danych.The tutorial uses migrations to create the database from the data model.

Za pomocą programu Visual Studio 2017 na Windows lub za pomocą interfejsu wiersza polecenia platformy .NET Core w systemie Windows, macOS lub Linux, można wykonać kroki samouczka.You can follow the tutorial by using Visual Studio 2017 on Windows, or by using the .NET Core CLI on Windows, macOS, or Linux.

Wyświetl przykład w tym artykule w witrynie GitHub:View this article's sample on GitHub:

Wymagania wstępnePrerequisites

Zainstaluj następujące oprogramowanie:Install the following software:

Tworzenie nowego projektuCreate a new project

  • Otwórz program Visual Studio 2017Open Visual Studio 2017
  • Plik > Nowy > ProjektFile > New > Project
  • Z menu po lewej stronie wybierz zainstalowane > Visual C# > .NET Core.From the left menu, select Installed > Visual C# > .NET Core.
  • Wybierz aplikacji sieci Web platformy ASP.NET Core.Select ASP.NET Core Web Application.
  • Wprowadź EFGetStarted.AspNetCore.NewDb nazwę i kliknij przycisk OK.Enter EFGetStarted.AspNetCore.NewDb for the name and click OK.
  • W Nowa aplikacja internetowa ASP.NET Core okno dialogowe:In the New ASP.NET Core Web Application dialog:
    • Upewnij się, że platformy .NET Core i platformy ASP.NET Core 2.1 wybranych z listy rozwijanejMake sure that .NET Core and ASP.NET Core 2.1 are selected in the drop-down lists
    • Wybierz aplikacji sieci Web (Model-View-Controller) szablonu projektuSelect the Web Application (Model-View-Controller) project template
    • Upewnij się, że uwierzytelniania ustawiono bez uwierzytelnianiaMake sure that Authentication is set to No Authentication
    • Kliknij przycisk OKClick OK

Ostrzeżenie: Jeśli używasz indywidualne konta użytkowników zamiast Brak dla uwierzytelniania , a następnie na model Entity Framework Core zostanie dodany do projektu w Models\IdentityModel.cs.Warning: If you use Individual User Accounts instead of None for Authentication then an Entity Framework Core model will be added to the project in Models\IdentityModel.cs. Przy użyciu technik, z którego dowiesz się, w tym samouczku, można dodać drugi model lub rozszerzyć ten istniejący model zawiera Twoje klas jednostek.Using the techniques you learn in this tutorial, you can choose to add a second model, or extend this existing model to contain your entity classes.

Instalowanie platformy Entity Framework CoreInstall Entity Framework Core

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

Na potrzeby tego samouczka nie trzeba zainstalować pakiet dostawcy, ponieważ w tym samouczku użyto programu SQL Server.For this tutorial, you don't have to install a provider package because the tutorial uses SQL Server. Pakiet dostawcy programu SQL Server znajduje się w meta Microsoft.aspnetcore.all Microsoft.AspnetCore.App.The SQL Server provider package is included in the Microsoft.AspnetCore.App metapackage.

Tworzenie modeluCreate the model

Zdefiniuj klasę kontekstu i klas jednostek, które tworzą model.Define a context class and entity classes that make up the model.

  • Kliknij prawym przyciskiem myszy modeli i wybierz polecenie Dodaj > klasa.Right-click on the Models folder and select Add > Class.

  • Wprowadź Model.cs jako nazwę i kliknij przycisk OK.Enter Model.cs as the name and click OK.

  • Zastąp zawartość pliku następującym kodem:Replace the contents of the file with the following code:

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace EFGetStarted.AspNetCore.NewDb.Models
    {
        public class BloggingContext : DbContext
        {
            public BloggingContext(DbContextOptions<BloggingContext> options)
                : base(options)
            { }
    
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
        }
    
        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; }
        }
    }
    

Zazwyczaj jest aplikacji produkcyjnej przełączyć każda klasa w oddzielnym pliku.A production app would typically put each class in a separate file. Dla uproszczenia ten samouczek umieszcza w ramach tych zajęć w jednym pliku.For the sake of simplicity, this tutorial puts these classes in one file.

Zarejestrowanie kontekście wstrzykiwanie zależnościRegister the context with dependency injection

Usługi (takie jak BloggingContext) zostały zarejestrowane przy użyciu wstrzykiwanie zależności podczas uruchamiania aplikacji.Services (such as BloggingContext) are registered with dependency injection during application startup. Składniki, które wymagają tych usług, (na przykład kontrolerów MVC) znajdują się tych usług za pomocą właściwości lub parametry konstruktora.Components that require these services (such as MVC controllers) are provided these services via constructor parameters or properties.

Zapewnienie BloggingContext dostępne dla kontrolerów MVC, zarejestruj go jako usługę.To make BloggingContext available to MVC controllers, register it as a service.

  • W Startup.cs Dodaj następujący kod using instrukcji:In Startup.cs add the following using statements:

    using EFGetStarted.AspNetCore.NewDb.Models;
    using Microsoft.EntityFrameworkCore;
    
  • Dodaj następujący wyróżniony kod do ConfigureServices metody:Add the following highlighted code to the ConfigureServices method:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
    
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
        var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;ConnectRetryCount=0";
        services.AddDbContext<BloggingContext>
            (options => options.UseSqlServer(connection));
        // BloggingContext requires
        // using EFGetStarted.AspNetCore.NewDb.Models;
        // UseSqlServer requires
        // using Microsoft.EntityFrameworkCore;
    }
    

Aplikacji produkcyjnej zazwyczaj umieścić ciąg połączenia w zmiennej środowisku lub pliku konfiguracji.A production app would typically put the connection string in a configuration file or environment variable. Dla uproszczenia w tym samouczku zdefiniowano go w kodzie.For the sake of simplicity, this tutorial defines it in code. Zobacz parametry połączenia Aby uzyskać więcej informacji.See Connection Strings for more information.

Tworzenie bazy danychCreate the database

Następujące kroki użycia migracje utworzyć bazę danych.The following steps use migrations to create a database.

  • Narzędzia > Menedżer pakietów NuGet > Konsola Menedżera pakietówTools > NuGet Package Manager > Package Manager Console

  • Uruchom następujące polecenia:Run the following commands:

    Add-Migration InitialCreate
    Update-Database
    

    Jeśli zostanie wyświetlony błąd wskazujący The term 'add-migration' is not recognized as the name of a cmdlet, zamknij i otwórz ponownie program Visual Studio.If you get an error stating The term 'add-migration' is not recognized as the name of a cmdlet, close and reopen Visual Studio.

    Add-Migration Polecenia scaffolds migracji, aby utworzyć początkowy zestaw tabel dla modelu.The Add-Migration command scaffolds a migration to create the initial set of tables for the model. Update-Database Polecenie tworzy bazę danych i dotyczy nowej migracji.The Update-Database command creates the database and applies the new migration to it.

Tworzenie kontroleraCreate a controller

Tworzenia szkieletu kontrolera i widoki dla Blog jednostki.Scaffold a controller and views for the Blog entity.

  • Kliknij prawym przyciskiem myszy kontrolerów folderu w Eksploratora rozwiązań i wybierz Dodaj > kontrolera.Right-click on the Controllers folder in Solution Explorer and select Add > Controller.
  • Wybierz kontroler MVC z widokami używający narzędzia Entity Framework i kliknij przycisk Dodaj.Select MVC Controller with views, using Entity Framework and click Add.
  • Ustaw klasa modelu do Blog i klasa kontekstu danych do BloggingContext.Set Model class to Blog and Data context class to BloggingContext.
  • Kliknij przycisk Dodaj.Click Add.

Aparat tworzenia szkieletów tworzy następujące pliki:The scaffolding engine creates the following files:

  • Kontroler (Controllers/BlogsController.cs)A controller (Controllers/BlogsController.cs)
  • Widokami razor dla stron Create, Delete, szczegółowe informacje, edycji i indeksu (Views/Movies/*.cshtml)Razor views for Create, Delete, Details, Edit, and Index pages (Views/Movies/*.cshtml)

Uruchamianie aplikacjiRun the application

  • Debugowanie > Uruchom bez debugowaniaDebug > Start Without Debugging
  • Przejdź do /BlogsNavigate to /Blogs

  • Użyj Utwórz nowy link, aby utworzyć wpisy na blogu.Use the Create New link to create some blog entries.

    Tworzenie strony

  • Test szczegóły, Edytuj, i Usuń łącza.Test the Details, Edit, and Delete links.

    Strona indeksu

Dodatkowe zasobyAdditional Resources