/
ilyakos
/
ChatWithAI
Обзор
Документация
Войти
/
ilyakos
/
ChatWithAI
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ChatWithAI.Database/Repositories/Repository.cs
45 строк
2 KB
ilyakos
feat: Добавляет базовую инфраструктуру сущностей с мягким удалением
22 май 2026, 20:52
22 май 2026, 20:52
2ec3012
Код
Авторство
О чём код?
using ChatWithAI.Database.Models; using Microsoft.EntityFrameworkCore; namespace ChatWithAI.Database.Repositories; /// <summary> /// Базовая реализация репозитория на основе Entity Framework Core. /// Глобальный фильтр <c>IsDeleted = false</c>, установленный в <c>AppDbContext</c>, /// автоматически применяется ко всем запросам через <see cref="Set"/>. /// </summary> /// <typeparam name="T">Тип сущности, производный от <see cref="BaseEntity"/>.</typeparam> public class Repository<T>(AppDbContext db) : IRepository<T> where T : BaseEntity { /// <summary> /// Типизированный <c>DbSet</c> для прямого обращения к таблице из производных классов. /// </summary> protected readonly DbSet<T> Set = db.Set<T>(); /// <inheritdoc/> public Task<T?> GetByIdAsync(Guid id) => Set.FirstOrDefaultAsync(e => e.Id == id); /// <inheritdoc/> public async Task<IEnumerable<T>> GetAllAsync() => await Set.AsNoTracking().ToListAsync(); /// <inheritdoc/> public async Task AddAsync(T entity) => await Set.AddAsync(entity); /// <inheritdoc/> public async Task SoftDeleteAsync(Guid id) { var entity = await Set.FindAsync(id); if (entity is null) return; entity.IsDeleted = true; entity.DeletedAt = DateTime.UtcNow; } /// <inheritdoc/> public Task SaveChangesAsync() => db.SaveChangesAsync(); }