
#6 - Фреймворк Entity. Работа с базой данных
Видеоурок
Entity Framework – это отличное ORM-решение
, помогающее в автоматическом режиме связывать простые классы C# с внутренними таблицами БД. Фреймворк направлен преимущественно на работу с СУБД Microsoft SQL Server, но включает поддержку и остальных СУБД. В рамках текущего материала работаем с БД Microsoft SQL Server.
Для создания взаимодействия с сервером посредством Entity Framework нужно иметь пакет Microsoft.EntityFrameworkCore.SqlServer
. Помимо этого, нужно выполнить подготовительную работу по созданию нужной БД, соответствующей моделям.
Выполнить необходимое поможет Microsoft.EntityFrameworkCore.Tools
. Если был установлен ASP .NET Core 2.0 или новее, перечисленные пакеты являются встроенными.
Для начала работы с базой данных посредством фреймворка нужно создать класс, который унаследует все свои свойства от класса «Microsoft.EntityFrameworkCore.DbContext».
Зная это, добавляем в каталог «Models» новый класс с названием «AppDBContext»:
using Microsoft.EntityFrameworkCore;
namespace Shop.Models {
public class AppDBContext : DbContext {
public DbSet<TVModel> tv { get; set; }
public AppDBContext(DbContextOptions<AppDBContext> options) : base(options) {
Database.EnsureCreated();
}
}
}
Параметр DbSet включает в себя список объектов, сопоставимый с данными таблицы в БД. Руководствуясь базовыми рекомендациями, название модели нужно создавать в множественном числе, придерживаясь правил английского языка.
Наглядный пример, наименование класса в модели стоит указывать не «phone», а слово «phones».
С помощью параметра «options», в контекстный конструктор данных поступают настройки для контекста. Уже внутри конструктора создаётся база данных «Database.EnsureCreated()», если она не была создана ранее.
Для связи с базой данных нужно передать параметры подключения. Нужные значения указываем в файле appsettings.json. В него добавляем следующие строки:
{
"ConnectionStrings": {
"DefaultConnection": "Server=(localdb)mssqllocaldb;Database=mobilesdb;Trusted_Connection=True;"
}
}
В приведённом примере использует простейший движок БД – LocalDB. Он представляет собой облегчённый вариант SQL Server Express, ориентированный на создание приложений.
Последнее действие по настройке проекта – редактирование файла Startup.cs
. Здесь нас интересует метод ConfigureServices(), его нужно редактировать.
using Shop.Models;
using Microsoft.EntityFrameworkCore;
namespace Shop {
public class Startup {
public Startup(IConfiguration configuration) {
Configuration = configuration;
}
public IConfiguration Configuration { get; }
public void ConfigureServices(IServiceCollection services) {
// получаем строку подключения из файла конфигурации
string connection = Configuration.GetConnectionString("DefaultConnection");
// добавляем контекст AppDBContext в качестве сервиса в приложение
services.AddDbContext<AppDBContext>(options => options.UseSqlServer(connection));
services.AddMvc();
}
}
}
Включение контекста данных посредством сервиса обеспечивает возможность вызывать его в конструкторе контроллера, используя алгоритм внедрения зависимостей.
Материалы для курса
Чтобы скачивать материалы к видеокурсам необходимо оформить подписку на сайт
Задание к уроку
Необходимо оформить подписку на проект, чтобы получить доступ ко всем домашним заданиям
Большое задание по курсу
Вам необходимо оформить подписку на сайте, чтобы иметь доступ ко всем большим заданиям. В задание входит методика решения, а также готовый проект с ответом к заданию.
PS: подобные задания доступны при подписке от 1 месяца
Также стоит посмотреть