Создаю онлайн-сервис для чтения книг. День 2-3. Подключение сервера к БД
👮 Ограничения платформы
Для реализации базовых функций используется .NET 7.0 со следующими компонентами:
Avalonia (для кроссплатформенного UI, если потребуется).
.NET Framework Core (базовые библиотеки и runtime).
.NET Framework Tools (инструменты разработки).
.NET Framework Design (шаблоны и архитектурные решения).
🏗️ Проектирование структуры решения
Решение состоит из трёх проектов:
1. Server (Веб-API ASP.NET Core)
Роль: Точка входа приложения.
Содержит:
Эндпоинты API,
Middleware,
Конфигурацию сервера.
Зависимости:
ServerLibrary,
HelpLibrary,
Swashbuckle.AspNetCore.Filters.
2. HelpLibrary (Библиотека классов)
Роль: Хранение сущностей БД и DTO.
Пример сущности:
public class User
{
public int Id { get; set; }
public string Name { get; set; }
}
3. ServerLibrary (Библиотека классов)
Роль: Бизнес-логика и работа с БД.
Функционал:
Аутентификация,
Валидация данных,
Взаимодействие с базой данных.
📦 Установка пакетов Nuget
Для ServerLibrary:
Microsoft.AspNetCore.Identity
Microsoft.AspNetCore.Authentication.JwtBearer
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.IdentityModel.Tokens
System.IdentityModel.Tokens.Jwt
Для Server:
Swashbuckle.AspNetCore.Filters (для документации API).
🔗 НАСТРОЙКА ССЫЛОК МЕЖДУ ПРОЕКТАМИ
Проект Server ссылается на:
ServerLibrary,
HelpLibrary.
🛠️ Генерация сущностей через scaffolding
Что это такое? - scaffolding
Выполнение команды:
Scaffold-DbContext "Server=.\SQLEXPRESS;Database=Readify;Trusted_Connection=True;encrypt=false;" Microsoft.EntityFrameworkCore.SqlServer
Распределение кода:
DbContext → перемещён в ServerLibrary,
Сущности → остаются в HelpLibrary.
В конечном итоге сгенерировались сущности и контекст базы данных.
🗄️ Настройка подключения к БД
Добавление строки подключения в appsettings.json:
"ConnectionStrings":
{
"DefaultConnection": "Server=.\\SQLEXPRESS;Database=Readify;Trusted_Connection=True;Encrypt=false;"
}
Регистрация контекста БД в Program.cs:
builder.Services.AddDbContext<ReadifyContext>(options =>
{
options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection") ??
throw new InvalidOperationException("Error to connection!"));
});
✅ Итоги
Сгенерированы сущности БД через EF Core Scaffolding.
Настроено подключение к SQL Server.
Реализована трёхслойная архитектура:
Server (API),
HelpLibrary (DTO/Entities),
ServerLibrary (Бизнес-логика).
Проект готов к реализации бизнес-логики и разработке API!
Продолжение следует...




