namespace HrynCo.DAL.EF.Core; using System.Diagnostics.CodeAnalysis; using HrynCo.DAL.Abstract.Entities; using Microsoft.EntityFrameworkCore; [SuppressMessage("Major Code Smell", "S2436:Reduce the number of generic parameters", Justification = "Generic design is intentional and improves reusability")] public abstract class BaseRepository where TEntity : class, IEntity where TDbContext : DbContext where TEfRepository : BaseEfRepository where TEntityId : struct { private readonly Lazy _lazyEfRepository; protected BaseRepository() { _lazyEfRepository = new Lazy(CreateEfRepository); } protected TEfRepository EfRepository => _lazyEfRepository.Value; protected abstract TEfRepository CreateEfRepository(); }