Search code examples
c#entity-frameworkdatacontext

Add entity using factory repository pattern


I have the interface.

public interface IRepository<T> where T : class
{
   void Add(T entity);
   void Update(T entity);
   void Delete(T entity);
   void Delete(Expression<Func<T, bool>> filter);

Then

 public interface ICatRepository : IRepository<Cat>
 {
 }

Also I have the base class.

public abstract class RepositoryBase<T> where T : class
{
    private DbContext dataContext;
    protected readonly IDbSet<T> dbset;
    protected RepositoryBase(IDatabaseFactory databaseFactory)
    {
        DatabaseFactory = databaseFactory;
        dbset = DataContext.Set<T>();
    }

    protected IDatabaseFactory DatabaseFactory
    {
        get; private set;
    }

    protected DbContext DataContext
    {
        get { return dataContext ?? (dataContext = DatabaseFactory.Get()); }
    }
    public virtual void Add(T entity)
    {
        dbset.Add(entity);           
    }
    public virtual void Update(T entity)
    {
        dbset.Attach(entity);
        dataContext.Entry(entity).State = EntityState.Modified;
    } 
    public virtual void Delete(T entity)
    {
        dbset.Remove(entity);           
    }
    public virtual void Delete(Expression<Func<T, bool>> filter)
    {
        IEnumerable<T> objects = dbset.Where<T>(filter).AsEnumerable();
        foreach (T obj in objects)
           dbset.Remove(obj);
    } 

Now I have the implementation class.

 class CatRepository : RepositoryBase<Cat>, ICatRepository
 {
    public CatRepository(IDatabaseFactory databaseFactory) : base(databaseFactory)
    {

    }

    public void Add(Cat entity)
    {
        throw new NotImplementedException();
    }

    public void Delete(Cat entity)
    {
        throw new NotImplementedException();
    }

    public void Delete(Expression<Func<Cat, bool>> filter)
    {
        throw new NotImplementedException();
    }

My entity framework knowledge is little rusty. Not sure how to implement Add, Delete methods etc. Please give me a hint. Code snippet is warmly welcomed. Thanks.


Solution

  • Not sure how to implement Add, Delete methods

    They are already implemented in RepositoryBase.