Данное руководство устарело. Актуальное руководство: Руководство по ASP.NET Core 7
Вначале изменим имеющийся по умолчанию контроллер 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:
Введем в форму какие-либо данные и нажмем на копку:
После выполнения операций с данными мы можем найти автоматически сгенерированную базу данных в окне SQL Server Object Explorer и посмотреть все те данные, которые она содержит: