first of all I know this has already been discussed, but I couldn't find a situation that matched my case.I've been trying to implement the Repository Pattern and Unit of Work for a while now, whitout success. To make my problem more clear, I am posting an UML diagram of my implementation strategy, along with the code right below the pic. This is the structure:Bookstore.Core (class library)   Contracts    -ICrudRepository    -IBooksRepository    -IUnitOfWork   Models    -BaseEntity    -BookBookstore.Oracle   -BooksRepository   -OracleUnitOfWorkContracts/ICrudRepository: public interface ICrudRepository<T> where T : BaseEntity{    T Add(T item);    IEnumerable<T> GetAll();    T GetById(int id);    bool Update(T item);    bool Delete(int id);}Contracts/IBooksRepository: public interface IBooksRepository : ICrudRepository<Book>{}Contracts/IUnitOfWork: public interface IUnitOfWork : IDisposable{    void SaveChanges();}Models/BaseEntity:public abstract class BaseEntity{    public int ID { get; set; }}Models/Book:public class Book : BaseEntity{    public string Title { get; set; }    public string Author { get; set; }}BooksRepository:class BooksRepository : IBooksRepository    {        public Book Add(Book item)        {            throw new NotImplementedException();        }        public bool Delete(int id)        {            throw new NotImplementedException();        }        public IEnumerable<Book> GetAll()        {            throw new NotImplementedException();        }        public Book GetById(int id)        {            throw new NotImplementedException();        }        public bool Update(Book item)        {            throw new NotImplementedException();        }    }OracleUnitOfWork:class OracleUnitOfWork: IUnitOfWork    {        public void Dispose()        {            throw new NotImplementedException();        }        public void SaveChanges()        {            throw new NotImplementedException();        }    }Please note that almost every post I've read injects a DbContext(EF) or ISession(Nhibernate) in the repoitory implementations, while I'd like to work with raw SQL so I can' have that abstraction level that the DbContext gives, altought I'd like to know how to.SIDE NOTE:Please notice that there is a slight difference between the UML diagram and the code. That is, because the code is what i actually have, but the UML is where I'm going by implementing advices such as those ones from this post or jgauffin's blog 
Repository Pattern and raw ADO.NET
c#;design patterns;.net;dependency injection;ado.net