Using Repository Pattern for Abstracting Data Access from a Cache and Data Store