Бекенд на C# Web Api
Создание и конфигурация базы данных
Практически в любом Web Api приложении требуется хранилище данных — база данных. В базе данных хранятся все необходимые данные нашего сервиса, а сам сервис постоянно обращается к базе данных при поступлении запроса от клиента.

Для примера будем использовать базу данных PostgreSQL. Для работы с базой данных нужно установить следующие пакеты в NuGet (пкм по Solution —> Manage NuGet Package for Solution…):
Microsoft.EntityFrameworkCore.Design
Npgsql.EntityFrameworkCore.PostgreSQL
Таблицы для базы данных описываются обычным классом. В этом классе не должно быть ничего кроме свойств с публичным геттером и сеттером. Эти свойства описывают колонки в таблице. Также класс обязательно должен иметь атрибут [Table("table_name")].
[Table("player_profiles")]
public class PlayerProfiles
{
public string player_id { get; set; }
public string name { get; set; }
public char gender { get; set; }
public DateTime created_at { get; set; }
}Выше приведен пример описания таблицы с названием player_profiles с 4 колонками.
Для создания представления базы данных создаем еще один класс, наследующий DbContext. В этом классе обязательно должен быть конструктор, передающий базовому классу DbContextOptions.
Этот класс содержит в себе набор DbSet<T>, каждый из которых представляет собой одну таблицу в базе данных. DbSet<T> содержит методы для работы с таблицей (добавление, удаление, обновление записи и т.д.).
using Microsoft.EntityFrameworkCore;
public class RepositoryContext : DbContext
{
public RepositoryContext(DbContextOptions options)
: base(options)
{ }
public DbSet<PlayerProfile>? PlayerProfiles { get; set; }
public DbSet<...>? ... { get; set; }
}Следующим шагом необходимо настроить строку подключения к БД. Для этого открываем файл appsettings.json и добавляем в него раздел "PostgresqlConnection".
{
"𝐏𝐨𝐬𝐭𝐠𝐫𝐞𝐬𝐪𝐥𝐂𝐨𝐧𝐧𝐞𝐜𝐭𝐢𝐨𝐧": {
"𝐂𝐨𝐧𝐧𝐞𝐜𝐭𝐢𝐨𝐧𝐒𝐭𝐫𝐢𝐧𝐠": "𝐒𝐞𝐫𝐯𝐞𝐫=𝐩𝐨𝐬𝐭𝐠𝐫𝐞𝐬; 𝐇𝐨𝐬𝐭=𝐩𝐨𝐬𝐭𝐠𝐫𝐞𝐬_𝐝𝐛; 𝐏𝐨𝐫𝐭=𝟓𝟒𝟑𝟐; 𝐔𝐬𝐞𝐫 𝐢𝐝=𝐚𝐠𝐚𝐯𝐚; 𝐏𝐚𝐬𝐬𝐰𝐨𝐫𝐝=𝐬𝐨𝐦𝐞𝐬𝐭𝐫𝐨𝐧𝐠𝐩𝐚𝐬𝐬𝐰𝐨𝐫𝐝; 𝐝𝐚𝐭𝐚𝐛𝐚𝐬𝐞=𝐝𝐞𝐦𝐨-𝐰𝐞𝐛𝐚𝐩𝐢;"
},
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
},
"AllowedHosts": "*"
}Server — при использование PostgreSql значение server всегда будет postgres.
Host — может быть localhost либо ip конкретного хоста. Поскольку для развертывания сервиса мы будем использовать docker, то тут указано название сервиса бд, который будет создан в docker'е. Подробнее будет описано дальше.
Port — по умолчанию 5432. Можно использовать и другие порты при необходимости.
User id — id пользователя, которое требуется для входа в БД.
Password — пароль для входа в БД.
database — имя базы данных, в которой будет созданы все схемы и модели.
Последним шагом нужно зарегистрировать БД в DI контейнере внутри Program. Это делается с помощью кода, приведенного ниже.
var connectionString = config["PostgresqlConnection:ConnectionString"];
services.AddDbContext<RepositoryContext>(options => options.UseNpgsql(connectionString));Как упоминалось ранее, класс Program должен быть максимально чистым, поэтому этот код следует вынести в метод расширения.
Автор документа: Артём Ветик