SPA ПРОЕКТ БАЗА ДАННЫХ (ASP.NET CORE WEB API)

Мы продолжаем разработку нашего SPA приложение (или single page application).

Теперь пришло время создать реальную базу данных.

Наша база будет реализована на основе ORM системы, которая обеспецивает невернятно гибкую и очень быструю работу с данными

Для начала нам нужно установить два удобных для рабты фрэймворка. entity framework core и ASP.NET Core Identity.

ASP.NET Core Identity – мощная система авторизации от Microsoft, которая уже включает в себя всё необходимое для регистрации пользователей и их авторизации. Однако для храненния данных о пользователях, их пароли и т.п. нам необоходима база данных. Поэтому Identity Framework устроет на основе Entity framework-а. Самое крутое в этой системе что она использует атрибуты C#. Т.е. нам не надо писать код на подобие

Реальный пример врйэмфорка Yii2 php. Это не значит, что Yii2 или php хуже просто инфраструктура языка c# значительно более мощная и гибкая. Собственно, эта гибкость позволяет нам реализовать простую задачу проще.

В Identity framework core Всё что нам нужно сделать это атрибутировать класс, метод или свойство атрибутом [Authorize]. Но и конечно нам ничто не мешает сделать проверку авторизованного пользователя через конструкцию if.

entity framework core в свою очередь это мощнейший механизм взаимодействия с базой на уровне объектов. Entity переводится как сущность. Сущность — это просто одна запись в таблице базы данных. Например, таблица «пользовать» содержит множество сущностей пользователей. Такую систему взаимодействие объектов-сущностей в коде называют ORM (Object-Relational Mapping, рус. объектно-реляционное отображение) (показать вики).  Entity framework core – это готовая ORM От Microsoft.

Преимущество ORM

Например, без ORM, чтобы сделать обычный запрос к базе и перебрать данные в цикле. Нужно использовать сложную конструкцию.

С entity framework это значительно проще и изящнее.

Т.к. мы с вами очень разумны и не хотим писать километровые инструкции для вызова лишь одной таблицы, то мы конечно будем использовать ORM entity framework core.

Итак, давайте установим базу в наш проект. Важно отметить что так как авторизация пользователей требует также наличие базы, то сам Identity framework по умолчанию запускается на основе Entity framework. Давайте установим ASP.NET Core Identity.

Запустим NuGet и добавим несколько пакетов 

Моя текущая структура зависимостей

Nuget pakages

Необходимо установить следующие зависимости:

Microsoft.Aspnetcore.Identity

Microsoft.Aspnetcore.Identity.entityframeworkcore

Microsoft.EntityFrameworkCore.SqlServer

Microsoft.EntityFrameworkCore.Design

Microsoft.EntityFrameworkCore.Tools

Нажмитие правой кнопкой по проекту и выбирите пункт “Manage NuGet packages” перейдите во кладку brows и наберите соответсвующие звисимости.

Теперь в корень проекта добавим папку Models и внутри папки добавим наш класс контекста. WebApiDbContext. Необходимо раширить наш класс классом фреймворка IdentityDbContext. Всё что вам необходимо сделать это добавить данную констукцию. К тому же нам необходимо добавить конструктор, который принимает параметры с типом DbContextOptions<WebapiDbContext> это просто стандартная настройка фрэймворка её можно запомнить или просто взять из документации.

В классе startup.cs нам нужно реализовать строку подключения и настроить зависимости. Поэтому для начала добавим строку подключения. Как вы догадались у меня уже установленна база данных MS SQL server, поэтому мне просто нужно набрать строку подключения.

В методе ConfigureServices класса Startup.cs добавим настройку entity и identity фрэймворков.

Еще раз обратите внимание на строку подключения в сегменте initial catalog название нашей будущей базы. Сейчас её нет.

Дело в том, что фрэймворт создаст её автоматически.

После всех настроек теперь можно запустить миграцию. Если вкратце миграции — это мощный способ создавать таблицы на основе нашего кода без необходимости редактировать саму базу через, например Management studio или создавать таблицы через sql запросы. Система сама сравнивает наш контекст и создает на основе этого контекста таблицы или сущности.

Т.к. мы унаследовались от класса IdentityDbCOntext то данный контекст уже содержит сущность. В этом можно убедиться если посмотреть базового потомка класса IdentityDbContext нажав клавишу F12 или правой кнопкой мыши –> “перейти к определению”.

Давайте перейдем к определению к самому первому потомку. И уже внутри него мы наконец увидим наши будущие таблицы

На основе вот эти данных система сформирует таблицы в базе. Чтобы убедится в этом добавим миграцию.

Откройте «Вид» -> «Другие окна» -> «Консоль диспетчера пакетов» наберите слово Add- и нажмите «Tab» появится подсказка. Если подсказки нет, то скорее всего вы не установили пакет Microsoft.EntityFrameworkCore.Tools. Если всё хорошо выберем Add-Migration и добавим какое-нибудь своё название, например, InitialDb и нажмем Enter.

У нас появится сконфигурированный для создания базы и таблиц файл миграции. На этом этапе базы еще нет. Потому что мы не запустили миграцию. Чтобы это сделать наберите команду Update-Database и нажмите Enter.

Identity framework core migration

Проверим базу данных, создалась ли она

Подключимся к базе через VisualStudio на вкладке «вид» –> «обозреватель серверов».

Вы выпадающем списке как раз и будет наша новая база «WebApiDbContext»

 

Подключение к базе после миграции

Раскройте список и посмотрите какие таблицы добавила система.

Подключение к MS SQL Server через VisualStudio 2017

Спасибо!)

Comments are closed.