using Microsoft.EntityFrameworkCore; using Netina.Common.Models.Entity; using Netina.Repository.Models; using Netina.Repository.Repositories.Base.Contracts; namespace Netina.Repository.Repositories.Base { public class Repository : IRepository where T : class, IApiEntity { protected readonly ApplicationContext DbContext; public Repository(ApplicationContext dbContext) { DbContext = dbContext; Entities = DbContext.Set(); DbContext.ChangeTracker.Clear(); } public DbSet Entities { get; } public virtual IQueryable Table => Entities.Where(e => !e.IsRemoved); public virtual IQueryable TableNoTracking => Table.AsNoTracking(); public void Dispose() { Dispose(true); GC.SuppressFinalize(this); } protected virtual void Dispose(bool disposing) { DbContext?.Dispose(); } public IQueryable ExecuteCommand(FormattableString command) { return DbContext.Set().FromSql(command); } } }