using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using Microsoft.EntityFrameworkCore.Infrastructure; using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; namespace Backend.ApplicationCore.Interfaces.IRepositories { #pragma warning disable EF1001 // Internal EF Core API usage. public interface IDbContext : IDisposable { ChangeTracker ChangeTracker { get; } DatabaseFacade Database { get; } EntityEntry Attach(object entity); EntityEntry Attach(TEntity entity) where TEntity : class; void AttachRange(IEnumerable entities); void AttachRange(params object[] entities); EntityEntry Entry(object entity); EntityEntry Entry(TEntity entity) where TEntity : class; TEntity Find(params object[] keyValues) where TEntity : class; object Find(Type entityType, params object[] keyValues); ValueTask FindAsync(Type entityType, object[] keyValues, CancellationToken cancellationToken); ValueTask FindAsync(Type entityType, params object[] keyValues); ValueTask FindAsync(object[] keyValues, CancellationToken cancellationToken) where TEntity : class; ValueTask FindAsync(params object[] keyValues) where TEntity : class; EntityEntry Remove(object entity); EntityEntry Remove(TEntity entity) where TEntity : class; void RemoveRange(IEnumerable entities); void RemoveRange(params object[] entities); int SaveChanges(bool acceptAllChangesOnSuccess); int SaveChanges(); Task SaveChangesAsync(bool acceptAllChangesOnSuccess, CancellationToken cancellationToken = default); Task SaveChangesAsync(CancellationToken cancellationToken = default); DbSet Set() where TEntity : class; EntityEntry Update(object entity); EntityEntry Update(TEntity entity) where TEntity : class; void UpdateRange(IEnumerable entities); void UpdateRange(params object[] entities); } #pragma warning restore EF1001 // Internal EF Core API usage. }