All I am trying to find out the correct definition of the repository pattern.
My original understanding was this (extremely dumbed down)
With the introduction of LINQ in .NET, a generic repository pattern becomes much easier to realize:
public interface IRepository : IQueryable
{
void Add(T item);
void Remove(T item);
}
To qualify as a repository, it merely needs to be able to access data in the underlying store (easily provided by IQueryable) and modify the contained data.
You can provide extensions to the base interface to provide hooks for more entity-specific behaviour (such as wiring into a stored procedure call for a SQL-based repository), but the majority of operations can be completed by the simple interface.