You could use the built-in MemoryCache to store entire resultsets you have retrieved from the database.
A typical pattern:
MyModel model = MemoryCache.Default["my_model_key"] as MyModel;
if (model == null)
{
model = GetModelFromDatabase();
MemoryCache.Default["my_model_key"] = model;
}
// you could use the model here