I've put in a bit of work into the Repository pattern and just wanted your feedback.
Here is an overview
RepositoryQueryable: Provides core query abilities against your repository ( table - real or in-memory ).
Min, Sum, Max, Avg, Count, Distinct, GroupBy, Any, ToTable methods
NOTE: All these methods are overloaded with columname, and ICriteria objects.
Repository<T>: Extends RepositoryQueryable, also base class for providing CRUD (Create, Retrieve/Get, Update, Delete ) methods on any entity.
Create, Get, Find, Update, Delete, Recent, Find
NOTE: RepositorySql<T> extends this but leaves the Create(), Update(), and RowMapper for you to implement for your entity
RepositoryInMemory<T>: Provides exactly the same functionality as Repository<T> but everything is stored In-Memory as a DataTable.
Same as Repository<T>
NOTE: This is very useful for unit-testing.
RepositoryVersionable<T>: Provides versioning on top of any Repository<T> implementation.
NOTE: This is a decorator that encapsulates any IRepository<T>. The latest version of an entity always has the same Id ( primary key ).