/
romanryazh
/
ProductionManagement
Обзор
Документация
Войти
/
romanryazh
/
ProductionManagement
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
develop
ProductionManagement.Infrastructure/UnitOfWork.cs
46 строк
1 KB
Roman Ryazh
Реализация первой задачи. Добавлены сущности ProductType и EquipmentType, CRUD операции для них, реализованы необходимые для работы сервисы и компоненты конвейера.
10 авг 2025, 18:27
10 авг 2025, 18:27
a847bf0
Код
Авторство
О чём код?
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Storage; using ProductionManagement.Domain.Interfaces; namespace ProductionManagement.Infrastructure; /// <summary> /// Реализация одноимённого шаблона. Помогает работать с изменениями единой транзакцией. /// </summary> /// <param name="context">Контекст базы данных</param> public class UnitOfWork(AppDbContext context) : IUnitOfWork { private int _count = 0; private IDbContextTransaction? _transaction; public void BeginTransaction() { if (_transaction != null) { _count++; } else { _transaction = context.Database.BeginTransaction(); _count = 1; } } /// <summary> /// Подтверждает все изменения /// </summary> /// <param name="ct">Токен отмены <see cref="CancellationToken"/></param> public async Task CommitAsync(CancellationToken ct) { if (_count == 0) { await context.SaveChangesAsync(ct); } else if (--_count == 0) { await context.SaveChangesAsync(ct); await _transaction!.CommitAsync(ct); _transaction = null; } } }