If you use a repository pattern, you can change the storage implementation without changing your client. You can for example make it a configuration value (perhaps injected through an IoC container).
You're not explaining anything about your business logic or models, so a lot of assumptions here, but something like this in your client, in some screen:
var dataToDisplay = _fooRepository.GetByID(42);
And then this _fooRepository
is an IRepository<Foo>
, where the implementation can be a WCF client or a DbContext.DbSet<T>
wrapper that implements the interface.