static private void UpdateToSource(uint articleId, ArticleInfo articleInfo) { var newDbElement = new ArticleTable { Id = articleInfo.Id, Time = (ulong)articleInfo.Time, Info = JsonConvert.SerializeObject(articleInfo) }; using (DataConnection db = MySqlTools.CreateDataConnection( ConfigLoadingManager.GetInstance() .GetConfig().Database.GetConnectionString())) { try { db.BeginTransaction(IsolationLevel.Serializable); var query = (from p in db.GetTable <ArticleTable>() where p.Id == newDbElement.Id select p); var isExists = query.Count() != 0; if (!isExists) { return; } db.InsertOrReplace(newDbElement); } finally { db.CommitTransaction(); } } }
private void WriteMemoryToDb() { using (DataConnection db = MySqlTools.CreateDataConnection( ConfigLoadingManager.GetInstance() .GetConfig().Database.GetConnectionString())) { try { db.BeginTransaction(IsolationLevel.Serializable); foreach (var p in ArticleCache.Memory.Values) { db.InsertOrReplace(new ArticleTable { Id = p.Id, Time = (ulong)p.Time, Info = JsonConvert.SerializeObject(p) }); } } finally { db.CommitTransaction(); } } }
static private void RemoveFromSource(uint articleId) { using (DataConnection db = MySqlTools.CreateDataConnection( ConfigLoadingManager.GetInstance() .GetConfig().Database.GetConnectionString())) { db.Delete(new ArticleTable { Id = (uint)articleId }); } }
//Cache callbacks↓ private void LoadAllToCache() { using (DataConnection db = MySqlTools.CreateDataConnection( ConfigLoadingManager.GetInstance() .GetConfig().Database.GetConnectionString())) { var query = from p in db.GetTable <ArticleTable>() select p; foreach (var p in query) { var article = JsonConvert.DeserializeObject <ArticleInfo>(p.Info); article.Id = p.Id; article.Time = (long)p.Time; this.ArticleCache.Memory.TryAdd(article.Id, article); } } }
static private ArticleInfo GetFromSource(uint articleId) { using (DataConnection db = MySqlTools.CreateDataConnection( ConfigLoadingManager.GetInstance() .GetConfig().Database.GetConnectionString())) { var query = from p in db.GetTable <ArticleTable>() where p.Id == articleId select p; if (query.Count() == 0) { return(null); } var columns = query.First(); var article = JsonConvert.DeserializeObject <ArticleInfo>(columns.Info); article.Id = columns.Id; article.Time = (long)columns.Time; return(article); } }