Основные операции с моделями. Создание и вывод

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

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

Вначале изменим имеющийся по умолчанию контроллер HomeController:

using System.Linq;
using Microsoft.AspNetCore.Mvc;
using System.Threading.Tasks;
using Microsoft.EntityFrameworkCore;
using EFDataApp.Models; // пространство имен моделей и контекста данных

namespace EFDataApp.Controllers
{
    public class HomeController : Controller
    {
        private ApplicationContext db;
        public HomeController(ApplicationContext context)
        {
            db = context;
        }
	}
}

Для взаимодействия с базой данных в контроллере определяется переменная контекст данных ApplicationContext db. Причем поскольку в классе Startup в методе ConfigureServices контекст данных устанавливается как сервис, то в конструкторе контроллера мы можем получить переданный контекст данных.

Теперь добавим в контроллер три метода, которые будут добавлять новый объект в базу данных и выводить из нее все объекты:

public async Task<IActionResult> Index()
{
    return View(await db.Users.ToListAsync());
}
public IActionResult Create()
{
    return View();
}
[HttpPost]
public async Task<IActionResult> Create(User user)
{
    db.Users.Add(user);
    await db.SaveChangesAsync();
    return RedirectToAction("Index");
}

С помощью метода db.Users.ToListAsnc() мы будем получать объекты из бд, создавать из них список и передавать в представление.

А при помощи метода db.Users.Add() для данных из объекта user формируется sql-выражение INSERT, а метод db.SaveChangesAsync() выполняет это выражение, тем самым добавляя данные в базу данных.

А в папку Views/Home добавим новое представление Create.cshtml:

@model EFDataApp.Models.User
@{
    ViewBag.Title = "Добавление пользователя";
}
<form asp-action="create" asp-controller="home">
    <div class="form-group">
        <label asp-for="Name" class="control-label">Имя</label>
        <input type="text" asp-for="Name" class="form-control" />
    </div>
    <div class="form-group">
        <label asp-for="Age" class="control-label">Возраст</label>
        <input type="number" asp-for="Age" class="form-control" />
    </div>
    <div class="form-group">
        <input type="submit" value="Отправить" class="btn btn-default" />
    </div>
</form>

И также изменим (или добавим при отсутствии) представление Index.cshtml, которое будет отвечать за вывод объектов:

@model IEnumerable<EFDataApp.Models.User>
@{
    ViewBag.Title = "Все пользователи";
}
<a asp-action="Create">Добавить пользователя</a>
<table class="table">
    <tr><td>Имя</td><td>Возраст</td></tr>
    @foreach (var item in Model)
    {
        <tr><td>@item.Name</td><td>@item.Age</td></tr>
    }
</table>

Запустим приложение и обратимся к методу Create:

Создание модели в Entity Framework ASP.NET Core

Введем в форму какие-либо данные и нажмем на копку:

Вывод моделей в Entity Framework в ASP.NET Core

После выполнения операций с данными мы можем найти автоматически сгенерированную базу данных в окне SQL Server Object Explorer и посмотреть все те данные, которые она содержит:

Просмотр базы данных в SQL Server Object Explorer
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850