I am going to show you differences between covariance, contravariance and invariance in generics in C#.
Sometimes we need to remove all cache objects that contains specific entity because this entity has changed. We can do that by tagging and I will show you how.
If you have model with different name than query string you can simply use attribute to handle it