Adding a New Model
Note
An updated version of this tutorial is available here using the latest version of Visual Studio. The new tutorial uses ASP.NET Core MVC, which provides many improvements over this tutorial.
This tutorial teaches ASP.NET Core MVC with controllers and views. Razor Pages is a new alternative in ASP.NET Core, a page-based programming model that makes building web UI easier and more productive. We recommend you try the Razor Pages tutorial before the MVC version. The Razor Pages tutorial:
- Is easier to follow.
- Covers more features.
- Is the preferred approach for new app development.
In this section you'll add some classes for managing movies in a database. These classes will be the "model" part of the ASP.NET MVC app.
You'll use a .NET Framework data-access technology known as the Entity Framework to define and work with these model classes. The Entity Framework (often referred to as EF) supports a development paradigm called Code First. Code First allows you to create model objects by writing simple classes. (These are also known as POCO classes, from "plain-old CLR objects.") You can then have the database created on the fly from your classes, which enables a very clean and rapid development workflow. If you are required to create the database first, you can still follow this tutorial to learn about MVC and EF app development. You can then follow Tom Fizmakens ASP.NET Scaffolding tutorial, which covers the database first approach.
Adding Model Classes
In Solution Explorer, right click the Models folder, select Add, and then select Class.
Enter the class name "Movie".
Add the following five properties to the Movie
class:
using System;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
}
We'll use the Movie
class to represent movies in a database. Each instance of a Movie
object will correspond to a row within a database table, and each property of the Movie
class will map to a column in the table.
Note: In order to use System.Data.Entity, and the related class, you need to install the Entity Framework NuGet Package. Follow the link for further instructions.
In the same file, add the following MovieDBContext
class:
using System;
using System.Data.Entity;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
}
The MovieDBContext
class represents the Entity Framework movie database context, which handles fetching, storing, and updating Movie
class instances in a database. The MovieDBContext
derives from the DbContext
base class provided by the Entity Framework.
In order to be able to reference DbContext
and DbSet
, you need to add the following using
statement at the top of the file:
using System.Data.Entity;
You can do this by manually adding the using statement, or you can hover over the red squiggly lines, click Show potential fixes
and click using System.Data.Entity;
Note: Several unused using
statements have been removed. Visual Studio will show unused dependencies as gray. You can remove unused dependencies by hovering over the gray dependencies, click Show potential fixes
and click Remove Unused Usings.
We've finally added a model (the M in MVC). In the next section you'll work with the database connection string.