public void Set <TView>(object value, params object[] parameters) { try { var key = typeof(TView).GetViewKey(parameters); var entity = JsonViews.SingleOrDefault(x => x.Key == key); var json = JsonConvert.SerializeObject(value); if (entity == null) { entity = new JsonView { Key = key, Value = json, UpdatedOnUtc = DateTime.UtcNow, }; JsonViews.Add(entity); } entity.Value = json; entity.UpdatedOnUtc = DateTime.UtcNow; SaveChanges(); } catch (Exception) { Set <TView>(value, parameters); } }
public TView Get <TView>(params object[] parameters) { try { var key = typeof(TView).GetViewKey(parameters); var entity = JsonViews.AsNoTracking().SingleOrDefault(x => x.Key == key); if (entity == null) { entity = new JsonView { Key = key, UpdatedOnUtc = DateTime.UtcNow, }; JsonViews.Add(entity); SaveChanges(); return(default(TView)); } if (string.IsNullOrWhiteSpace(entity.Value)) { return(default(TView)); } var value = JsonConvert.DeserializeObject <TView>(entity.Value); return(value); } catch (Exception) { return(Get <TView>(parameters)); } }