public VehicleModel GetByMakeAndModelCode(string makeCode, string modelCode) { var model = GetFromCache(makeCode, modelCode); if (model == null) { Vehicle vehicle = null; using (var context = new VehicleEntities()) { vehicle = context.Vehicles.Include("Model") .Include("Model.Make") .FirstOrDefault(x => x.Model.ModelCode == modelCode && x.Model.MakeCode == makeCode); } if (vehicle == null) { throw new HttpResponseException(HttpStatusCode.NotFound); } model = new VehicleModel() { ImageUrl = vehicle.ImageUrl, Make = vehicle.Model.Make.MakeName, Model = vehicle.Model.ModelName, ProducedFromUtc = vehicle.ProducedFromUtc, ProducedToUtc = vehicle.ProducedToUtc }; PutToCache(model, makeCode, modelCode); } return model; }
private static void PutToCache(VehicleModel model, string makeCode, string modelCode) { var cached = new CachedVehicleModel() { Model = model, CacheKey = CachedVehicleModel.GetCacheKey(makeCode, modelCode) }; var db = GetDatabase(); var collection = db.GetCollection<CachedVehicleModel>("vehicles"); collection.Save(cached); }