Создание первого приложения ASP.NET MVC 5

Создание проекта

Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core

Последнее обновление: 31.10.2015

Мы посмотрели некоторые основные понятия паттерна MVC, теперь создадим первое приложение. Это будет очень простенькое приложение, цель которого - дать некоторое начальное понимание работы с ASP.NET MVC 5.

Это приложение будет эмулировать работу книжного магазина: оно будет предоставлять нам выбор книг, а пользователь, зашедший на сайт, сможет оформить покупку. Для начала, я думаю, достаточно.

Итак, откроем Visual Studio 2013 File -> New Project.. и создадим новый проект. Назовем новый проект, например, BookStore. Затем в окне создания нового проекта выберем MVC. А в правой части окна изменим тип аутентификации приложения на No Authentication (так как пока нам система аутентификации не нужна):

После этого будет создан по сути проект, который практически не обладает никакой функциональностью, хотя уже имеет базовую структуру.

Первым делом определим модели данных нашего приложения. Поскольку речь идет о книжном магазине, то такими моделями могут быть модель книги и модель покупки книги.

В проекте уже по умолчанию определена папка Models. В ней будут находиться наши модели. Нажмем на эту папку правой кнопкой мыши и в появившемся меню выберем Add->Class.... Назовем первый новый класс Book и добавим в него код, описывающий модель книги:

namespace BookStore.Models
{
    public class Book
    {
        // ID книги
        public int Id { get; set; }
        // название книги
        public string Name { get; set; }
        // автор книги
        public string Author { get; set; }
        // цена
        public int Price { get; set; }
    }
}

Конечно, в реальном приложении подобная модель могла бы также включать изображение книги, количество экземпляров, год издания и т.д. Но для нашей задачи вполне сойдет и этот набор полей.

Подобным образом второй класс - модель Purchase, которая будет отвечать за отдельную совершаемую покупку книги:

using System;
namespace BookStore.Models
{
    public class Purchase
    {
        // ID покупки
        public int PurchaseId { get; set; }
        // имя и фамилия покупателя
        public string Person { get; set; }
        // адрес покупателя
        public string Address { get; set; }
        // ID книги
        public int BookId { get; set; }
        // дата покупки
        public DateTime Date { get; set; }
    }
}

Условности при создании моделей

Как вы видите, модель представляет обычный класс на языке C#. Все модели здесь имеют набор свойств, описывающие реальные свойства объекта. В то же время при создании моделей следует соблюдать некоторые условности. Поскольку мы будем использовать для хранения моделей базу данных SQL Server, то для манипуляции над объектами в базе данных нам надо определить для них первичный ключ (Primary Key), который выполняет роль универсального идентификатора объекта. Поэтому первым свойством в каждой модели идет свойство Id, предназначенное для хранения первичного ключа.

И тут вступают в силу условности: свойство идентификатора модели должна иметь имя либо Имя_моделиId, либо просто Id. Так, у нас в модели Book определено свойство Id, то есть данное свойство является первичным ключом. А в случае с моделью Purchase свойство носит название PurchaseId.

Второй способ состоял в определении ключа с помощью атрибута Key, установленным над нужным свойством.

EntityFramework

Для работы с данными в ASP.NET MVC рекомендуется использовать фреймворк Entity Framework, хотя его использование необязательно и всецело зависит от предпочтений разработчика. Преимущество этого фреймворка состоит в том, что он позволяет абстрагироваться от структуры конкретной базы данных и вести все операции с данными через модель.

Сейчас наш проект не содержит библиотек EntityFramework. И чтобы их добавить в проект, воспользуемся пакетным менеджером NuGet. Итак, окне Solution Explorer (Обозреватель решений) нажмем правой кнопкой мыши в структуре проекта на узел References и в появившемся меню выберем Manage NuGet Packages...

В окне управления пакетами NuGet в правом верхнем углу введите в поле поиска EntityFramework и нажмите Enter. После этого в среднем столбце будут отображены все найденные пакеты, которые имеют отношение к запросу, а самым первым будет пакет самого фреймворка EntityFramework, который нам и надо установить:

Запустим процесс установки пакета, нажав на кнопку Install.

Создание контекста данных

После завершения установки создадим контекст данных. Контекст данных использует EntityFramework для доступа к БД на основе некоторой модели. Итак, добавим в папку Models новый класс BookContext:

using System;
using System.Collections.Generic;
using System.Web;
using System.Data.Entity;

namespace BookStore.Models
{
    public class BookContext : DbContext
    {
        public DbSet<Book> Books { get; set; }
        public DbSet<Purchase> Purchases { get; set; }
    }
}

Чтобы создать контекст, нам надо унаследовать новый класс от класса DbContext. Свойства наподобие public DbSet<Book> Books { get; set; } помогают получать из БД набор данных определенного типа (например, набор объектов Book).

CodeFirst

Хотя мы будем использовать базу данных, но создавать явным образом мы ее не будем. За нас все сделает EntityFramework. Это так называемый подход Code First - у нас есть модели, и по ним фреймворк будет создавать таблицы в базе данных.

И в заключении работы над модельной частью установим строку подключения. Для этого откроем файл web.config, найдем секцию configSections и сразу после нее вставим секцию connectionStrings:

<connectionStrings>
    <add name="BookContext" connectionString="Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename='|DataDirectory|\Bookstore.mdf';Integrated Security=True"
 providerName="System.Data.SqlClient" />
</connectionStrings>

В этой секции мы определяем путь к базе данных, которая затем будет создаваться. Выражение |DataDirectory| представляет заместитель, который указывает, что база данных будет создаваться в проекте в папке App_Data. Позднее мы подробнее разберем настройки подключения к БД.

Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850