Skip to content

Приложение Asp.Net Mvc Crud

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (3 оценок, среднее: 5,00 из 5)
Загрузка...

[ Полезный рекламный блок ]

Попробуйте свои силы в игре, где ваши навыки программирования на C# станут решающим фактором. Переходите по ссылке 🔰.


В этой статьей, мы рассмотрим пример простого Asp.Net Mvc Crud приложения, в двух вариантах: с использованием EF Core и обычной коллекции.

Операции будут основаны на модели User, представляющую обычного пользователя.

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

Приложение Asp.Net Mvc Crud

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

Модель и Репозиторий

Добавление контроллера и представления

Хранение данных с Entity Framework Core

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

Чтобы создать проект Users, запустите Visual Studio и выберите в меню File (Файл) — New Project (Создать Проект). Укажите шаблон проекта ASP.NET Core Web Application (Веб-приложение ASP.NET Core). Введите UsersCrud, в поле Name, на следующей странице укажите Framework .Net 7.0 и нажмите кнопку Create:

Приложение Asp.Net Mvc Crud

Модель и Репозиторий

Модель для приложения UsersCrud будет основана на списке пользователей. Создайте папку Models и добавьте в нее файл класса по имени User.cs со следующим содержимым:

Мне нравится обеспечивать согласованный доступ к данным в приложении с ис­пользованием паттерна «Хранилище» (Repository), в котором интерфейс определяет свойства и методы, предназначенные для доступа к данным, а для работы с механизмом хранения данных применяется класс реализации. Преимущество использования паттерна «Хранилище» связано с облегчением модульного тестирования части MVC приложения, а также с тем, что детали, касающиеся хранения данных, скрыты от остальных частей приложения.

Чтобы создать интерфейс хранилища, создайте папку Interfaces и добавьте в нее файл интерфейса по имени IUser.cs со следующим содержимым:

Метод GetAllUsers() будет предоставлять доступ только по чтению ко всем пользователям, известным приложению. Метод AddUser() будет использоваться для добавления новых пользователей.

На данном этапе мы собираемся хранить объекты модели в памяти, а немного позже заменим это инфраструктурой Entity Framework Core. Создайте папку Repository и добавьте в нее файл класса по имени UserRepository.cs со следующим содержимым:

Класс UserRepository реализует интерфейс IUser и применяет экземпляр List для отслеживания объектов User, т.е. в случае остановки или перезапуска приложения данные будут утрачиваться. Постоянное хранилище будет введено в позже, а хранилища в памяти вполне достаточно для приведения в работоспособное состояние части ASP.NET Core МVС проекта, прежде чем добавлять часть EntityFramework Core.

Добавьте в класс Program оператор следующий оператор,  чтобы зарегистрировать класс UserRepository как реализацию для использования в качестве за­висимостей интерфейса IUser:

Данная строка кода, регистрирует класс UserRepository с применением метода AddSingleton. В результате при распознавании зависимости интерфейса IUserв первый раз создается одиночный объект, который будет использоваться для всех последующих зависимостей.

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

Модель данных служит для передачи данных между представлением (отображением) и контроллером. Модель UserViewModel содержит набор свойств, которые будут использоваться для передачи данных о пользователе между клиентской стороной (веб-страницей) и серверной стороной (контроллером).

Указан атрибут [Required], который также требует наличие значения, и атрибут [Range(10, 120)], который ограничивает диапазон возраста от 10 до 120.

Добавление контроллера и представления

Основной акцент в рассматриваемом примере приложения сделан на управлении пользователи, потому что это создает великолепную возможность для демонстрации различных средств работы с данными. Нам нужен контроллер, который будет получать НТTP-запросы и транслировать их в операции над объектами User, так что создайте папку Controllers, добавьте в нее файл по имени HomeController.cs, со следующим содержимым:

Метод действия Index() передает коллекцию объектов User из хранилища своему представлению, которое отобразит пользователю экранную таблицу с данны­ми. Метод AddUser() сохраняет новые объекты Product, которые основаны на данных, полученных в НТTP-запросе POST и т.д.

Далее создайте папку Views/Home и поместите в нее файл по имени Index.cshtml со следующим содержимым: 

Данное представление, отображает список пользователей, используя данные модели User, и предоставляет возможности для обновления и удаления записей о пользователях.

В папку Views/Home, поместите файл по имени CreateOrUpdate.cshtml со следующим содержимым: 

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

Запустите приложение и проверьте его работу:

users crud asp.net core mvc

Пример работы с коллекцией пользователей завершен.

Хранение данных с Entity Framework Core

Теперь добавим инфраструктуру Entity Framework Core в проект, что бы увидеть как легко работать с базой данных, при это внеся минимум изменений в текущую структуру проекта.

Для начала загрузим библиотеку Entity Framework Core Sql Server:

asp.net mvc ef core crud

Или через Package Manager Console:

Перейдем в файл appsettings.json и пропишем конфигурацию подключения и логирования (если файла нет, создайте его в корне проекта):

Строки подключения определяются в файле appsettings.json, в коде выше, представлено определение строки подключения для БД приложения GameStore. В проекте применяется версия LocalDB продукта SQL Server, которая спроектирована специально для разработчиков и не требует конфигурирования или учетных данных.

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

Даже в проекте, сохраняющем лишь небольшой объем данных, важно понимать запросы и команды SQL, которые инфраструктура Entity Framework Core посылает серверу баз данных.

В корне проекта, определим папку Data, в которую добавим класс ApplicationContext, со следующим содержимым:

Теперь пора обновить класс реализации хранилища, чтобы обращаться к данным через класс контекста, определенный ранее. Изменим код класса UserRepository, следующим образом:

В приложении ASP.NET Core MVC, доступ к объектам контекста данных управляется с использованием внедрения зависимостей и потому в класс UserRepository был добавлен конструктор, принимающий объект ApplicationContext, который будет предоставлен средством внедрения зависимостей во время выполнения.

Свойство Users, определенное интерфейсом хранилища, может быть реализовано путем возвращения свойства DbSet<User>, которое определено в классе контекста. Аналогично метод AddUser() реализовать легко, потому что объект DbSet<Product> определяет метод Add(), который принимает объекты User и сохраняет их на постоянной основе.

Добавьте в класс Program.cs операторы конфигурации, чтобы сообщить инфраструктуре Entity Framework Core о том, каким образом использовать строку подключения, которую должен применять поставщик БД, и как управлять классом контекста:

Не забудьте убрать старую строку или просто изменить ее жизненный цикл:

Инфраструктура Entity Framework Core управляет базами данных через средство, называемое миграциями, которые представляют собой наборы изменений, создающих или модифицирующих БД с целью ее синхронизации с моделью данных.

Для работы с миграцией, необходимо скачать следующую библиотеку — Microsoft.EntityFrameworkCore.Tools

Или через Package Manager Console:

Для создания миграции в окне Package Manager Console введите следующую команду: 

Init или Initial — общепринятое имя, используемое для миграции, которая производит первоначальную подготовку БД.

При выполнении команды, инфраструктура Entity Framework Сoге инспектирует проект, находит класс контекста и применяет его для создания миграции. В результате в окне Solution Explorer появится папка Migrations, содержащая файлы классов, операторы которых подготовят БД.

Просто создать миграцию, которая представляет собой всего лишь набор инструкций, недостаточно. Инструкции миграции должны быть выполнены, чтобы создать БД, которая сможет хранить данные приложения. Для выполнения инструкций миграции, в окне Package Manager Console выполните команду:

Инфраструктура Entity Fгamework Core подключится к серверу баз данных, указанному в строке подключения, и выполнит операторы в миграции. Результатом будет БД, которую можно использовать для хранения объектов User.

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

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

Так же вам может быть интересна предыдущая статья — Прием платежей через Liqpay Api в Asp.Net Core.


Вы хотите научится писать код на языке программирования C#?

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

Переходите к нам на страницу Dijix и ознакомьтесь с условиями обучения, мы специализируемся только на индивидуальных занятиях, как для начинающих, так и для более продвинутых программистов. Вы можете взять как одно занятие для проработки интересующего Вас вопроса, так и несколько, для более плотной работы. Благодаря личному кабинету, каждый студент повысит качество своего обучения, в вашем распоряжении:

  • Доступ к пройденному материалу
  • Тематические статьи
  • Библиотека книг
  • Онлайн тестирование
  • Общение в закрытых группах

https://dijix.com.ua

Живи в своем мире, программируй в нашем.


 

Published inAsp.Net Core
Подписаться
Уведомить о
guest
3 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
Anjali Corkery
Anjali Corkery
1 год назад

Очень просто и интересно, благодарю!

Max Lernov
Max Lernov
1 год назад

Можно ли соединить данное приложение с авторизацией, к примеру как в вашей статье — https://dijix.com.ua/blog/kak-sdelat-avtorizacziyu-v-asp-net-c/

Вы планируете в дальнейшем сделать что-то подобное ?
Спасибо

Анна
Анна
1 год назад

Спасибо огромное!

3
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x