public static void UpdateArticle(int ArticleID, string Subject, string Message, ArticleStatus status, int CategoryID) { SqlConnection conn = CARETTA.DBI.DBHelper.getConnection(); conn.Open(); SqlTransaction Tran = conn.BeginTransaction(IsolationLevel.Serializable); try { ForumArticle mArticle = new ForumArticle(); if (mArticle.Load(ArticleID)) { bool CategoryChanged = false; int OldCategoryID = 0; if (mArticle.CategoryID != CategoryID) { CategoryChanged = true; OldCategoryID = mArticle.CategoryID; } bool StatusChanged = false; if (mArticle.ArticleStatus != (int)status) { StatusChanged = true; } bool SyncNeeded = false; if (mArticle.ArticleSubject != Subject || mArticle.ArticleMessage != Message) { SyncNeeded = true; } mArticle.ArticleSubject = Subject; mArticle.ArticleMessage = Message; mArticle.ArticleStatus = (int)status; mArticle.CategoryID = CategoryID; mArticle.Save(); if (CategoryChanged) { ForumArticle.CategoryChange(OldCategoryID, CategoryID); } if (SyncNeeded) { ForumArticle.SyncMainItem(ArticleID, Subject, Message); } if (StatusChanged && (!CategoryChanged)) { ForumCategory.ArrangeCategory(CategoryID); } Tran.Commit(); } } catch (Exception ex) { Tran.Rollback(); throw; } finally { conn.Close(); } }