Generic Repository example. Can be used as a single repository that will work for every entity.