-
Notifications
You must be signed in to change notification settings - Fork 0
Entity Framework
Entity Framework (EF) — это платформа ORM (Object-Relational Mapping) с открытым исходным кодом для приложений .NET, поддерживаемая Microsoft. EF упрощает автоматического сопоставление объектов вашего программного обеспечения с таблицами и столбцами реляционной базы данных. Это позволяет разработчикам работать с данными, используя объекты предметно-ориентированных классов, не сосредотачиваясь на базовых таблицах и столбцах базы данных, в которых хранятся эти данные. Он заботится о создании подключений к базе данных и выполнении команд, а также о получении результатов запросов и автоматической материализации этих результатов в качестве объектов вашего приложения. Это также помогает отслеживать изменения в этих объектах, и при получении инструкций он также сохраняет эти изменения обратно в базу данных для вас.
Entity Framework поддерживает различные системы управления базами данных, такие как Microsoft SQL Server, Oracle, MySQL, PostgreSQL и другие. Это позволяет создавать приложения, работающие с разными базами данных, используя общий код.
Отличительной чертой Entity Framework является использование запросов LINQ для выборки данных из БД. С помощью LINQ мы можем не только извлекать определенные строки, хранящие объекты, из бд, но и получать объекты, связанные различными ассоциативными связями.
Entity Framework позволяет автоматизировать процесс изменения схемы базы данных с помощью механизма миграций. Это упрощает обновление базы данных при изменениях в модели данных.
Первым делом нужно скачать необходимые пакеты с помощью Nuget. Первые три из них можно увидеть на картинке ниже. Последний пакет необходимо выбирать в зависимости от той СУБД, которую вы хотите использовать, в данном случае это PostgreSQL.

Следующим шагом является создание контекста БД. В примере ниже это класс ApplicationDbContext, который наследуются от DbContext.
public class ApplicationDbContext : DbContext
{
public DbSet<User> Users { get; set; }
public ApplicationDbContext(DbContextOptions<ApplicationDbContext> options) : base(options) { }
}
Далее идет модель User, которая добавляется в контекст БД в примере выше.
public class User
{
public Guid Id { get; set; }
public string FullName { get; set; }
}
Предпоследним шагом является добавление стрики подключения ConnectionStrings в appsettings.json. В поле DefaultConnection указывается сама строка подключения. Отметим, что вместо DefaultConnection может быть другое название.
"ConnectionStrings": {
"DefaultConnection": "Server=localhost;Port=5432;Database=DevelopDB;User Id=postgres;Password=root;"
}
И в заключительном шаге в файле Program.cs мы добавляем наш контекст БД в сервисы приложения. Обратите внимание на options.UseNpgsql(connectionString), если вы используете другую СУБД, то вместо UseNpgsql будет другой метод.
var connectionString = builder.Configuration.GetConnectionString("DefaultConnection");
builder.Services.AddDbContext<ApplicationDbContext>(options => options.UseNpgsql(connectionString));
Ниже представлен пример того, как можно получить наш контекст БД в каком-то классе (вожно, чтобы этот класс был добавлен в сервисы приложения), тогда с помощью Dependency Injection контекст БД передастся в конструктор нашего класса.
public class Test
{
private readonly ApplicationDbContext _context;
public UserRepository(ApplicationDbContext context)
{
_context = context;
}
}
Также это можно сделать следующим способом.
using var serviceScope = app.Services.CreateScope();
var dbContext = serviceScope.ServiceProvider.GetService<TestContext>();
После добавления в контекст БД новой модели с помощью DbSet, нужно чтобы соответствующая таблица появилась в нашей базе данных. Для этих целях существуют миграции.
Чтобы воспользоваться этим инструментом, нужно открыть Консоль диспетчера пакетов (ДП), который можно найти в Сердства>>Диспетчер пакетов NuGet>>Консоль диспетчера пакетов.

Далее в открывшейся консоли ДП, нужно прописать "add-migration your_name". После этого у вас появится папка Migration, где будет находится ваша миграция. Открыв файл с миграцией, вы можете проверить правильно ли были созданы метода для внесения изменения в БД.

И когда вы убедились, что Entity Framework понял вас правильно, нужно применить миграцию с помощью команды "update-database". Так же если есть нужда вернуться к какой-то миграции, нужно прописать "update-database migration_name", обратите внимание, что имя должно быть то, что имеет файл с миграцией.
- О проекте
- Реализованные части проекта
- Controllers
- Exceptions
- Middlewares
- Models
- Services
- Технологии используемые в проекте
- Требования
- Диаграмма классов предметной области
- Нефункциональные требования
- Функциональные требования