using System;
using System.Linq;
using System.Linq.Expressions;

namespace MvpSample.DAL.Contracts
{
    public interface IGenericRepository<T>:IDisposable
    {
        // CRUD interface
        void Add(T entity);    // Create
        T GetById(int id);         //Read
        void Update(int id);   // Update
        void Delete(int id); // Delete


        void Save();
        // Facility
        IQueryable<T> GetAll();
        IQueryable<T> FindBy(Expression<Func<T, bool>> predicate);
    }
}
