AspNetCore.Docs/aspnetcore/tutorials/first-mvc-app/adding-model.md

6.1 KiB

title author description keywords ms.author manager ms.date ms.topic ms.assetid ms.technology ms.prod uid
Adding a model to an ASP.NET Core MVC app rick-anderson Add a model to a simple ASP.NET Core app. ASP.NET Core, riande wpickett 03/30/2017 get-started-article 8dc28498-00ee-4d66-b903-b593059e9f39 aspnet asp.net-core tutorials/first-mvc-app/adding-model

[!INCLUDEadding-model]

Note: The ASP.NET Core 2.0 templates contain the Models folder.

In Solution Explorer, right click the MvcMovie project > Add > New Folder. Name the folder Models.

Right click the Models folder > Add > Class. Name the class Movie and add the following properties:

[!code-csharpMain]

The ID field is required by the database for the primary key.

Build the project to verify you don't have any errors. You now have a Model in your MVC app.

Scaffolding a controller

In Solution Explorer, right-click the Controllers folder > Add > Controller.

view of above step

In the Add MVC Dependencies dialog, select Minimal Dependencies, and select Add.

view of above step

Visual Studio adds the dependencies needed to scaffold a controller, but the controller itself is not created. The next invoke of > Add > Controller creates the controller.

In Solution Explorer, right-click the Controllers folder > Add > Controller.

view of above step

In the Add Scaffold dialog, tap MVC Controller with views, using Entity Framework > Add.

Add Scaffold dialog

Complete the Add Controller dialog:

  • Model class: Movie (MvcMovie.Models)
  • Data context class: Select the + icon and add the default MvcMovie.Models.MvcMovieContext

Add Data context

  • Views: Keep the default of each option checked
  • Controller name: Keep the default MoviesController
  • Tap Add

Add Controller dialog

Visual Studio creates:

  • An Entity Framework Core database context class (Data/MvcMovieContext.cs)
  • A movies controller (Controllers/MoviesController.cs)
  • Razor view files for Create, Delete, Details, Edit and Index pages (Views/Movies/*.cshtml)

The automatic creation of the database context and CRUD (create, read, update, and delete) action methods and views is known as scaffolding. You'll soon have a fully functional web application that lets you manage a movie database.

If you run the app and click on the Mvc Movie link, you'll get an error similar to the following:

An unhandled exception occurred while processing the request.

SqlException: Cannot open database "MvcMovieContext-<GUID removed>" requested by the login. The login failed.
Login failed for user 'Rick'.

System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString 

You need to create the database, and you'll use the EF Core Migrations feature to do that. Migrations lets you create a database that matches your data model and update the database schema when your data model changes.

Add EF tooling and perform initial migration

In this section you'll use the Package Manager Console (PMC) to:

  • Add the Entity Framework Core Tools package. This package is required to add migrations and update the database.
  • Add an initial migration.
  • Update the database with the initial migration.

From the Tools menu, select NuGet Package Manager > Package Manager Console.

PMC menu

In the PMC, enter the following commands:

Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration Initial
Update-Database

Note: If you receive an error with the Install-Package command, open NuGet Package Manager and search for the Microsoft.EntityFrameworkCore.Tools package. This allows you to install the package or check if it is already installed. Alternatively, see the CLI approach if you have problems with the PMC.

The Add-Migration command creates code to create the initial database schema. The schema is based on the model specified in the DbContext(In the Data/MvcMovieContext.cs file). The Initial argument is used to name the migrations. You can use any name, but by convention you choose a name that describes the migration. See Introduction to migrations for more information.

The Update-Database command runs the Up method in the Migrations/<time-stamp>_InitialCreate.cs file, which creates the database.

You can perform the preceeding steps using the command-line interface (CLI) rather than the PMC:

  • Add EF Core tooling to the .csproj file.

  • Run the following commands from the console (in the project directory):

    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

[!INCLUDEadding-model]

[!code-csharpMain]

[!INCLUDEadding-model]

Intellisense contextual menu on a Model item listing the available properties for ID, Price, Release Date, and Title

Additional resources

[!div class="step-by-step"] Previous Adding a View Next Working with SQL