1

i'm looking online for how to make a dynamic repository with EF and i often see that people are using ApplicationDbContext as a private object.

i'm guessing that it derived from DbContext but is there any problem with just using DbContext?

BTW i cant seem to be able to add ApplicationDbContext.. is there any using i'm missing?

public class Repository<T> : IRepository<T> where T : EntityBase
{
    private readonly ApplicationDbContext _dbContext;

    public Repository(ApplicationDbContext dbContext)
    {
        _dbContext = dbContext;
    }

    public virtual T GetById(int id)
    {
        return _dbContext.Set<T>().Find(id);
    }

    public virtual IEnumerable<T> List()
    {
        return _dbContext.Set<T>().AsEnumerable();
    }

    public virtual IEnumerable<T> List(System.Linq.Expressions.Expression<Func<T, bool>> predicate)
    {
        return _dbContext.Set<T>()
               .Where(predicate)
               .AsEnumerable();
    }

    public void Insert(T entity)
    {
        _dbContext.Set<T>().Add(entity);
        _dbContext.SaveChanges();
    }

    public void Update(T entity)
    {
        _dbContext.Entry(entity).State = EntityState.Modified;
        _dbContext.SaveChanges();
    }

    public void Delete(T entity)
    {
        _dbContext.Set<T>().Remove(entity);
        _dbContext.SaveChanges();
    }
}
calios
  • 525
  • 5
  • 13

1 Answers1

1

ApplicationDbContext with scaffolding may inherits from IdentityDbContext and either two inherits from DbContext which has EntityFramework features. ApplicationDbContext may have your context in other words, it is merging your contexts and yes, you can use your own DbContext.

faikzeybek
  • 11
  • 4