public override void UpdateBlogArticleKeywords(Revertable2Collection<BlogArticle> processlist) { string procedure = "bx_Blog_UpdateBlogArticleKeywords"; string table = "bx_BlogArticles"; string primaryKey = "ArticleID"; SqlDbType text1_Type = SqlDbType.NVarChar; int text1_Size = 50; SqlDbType reve1_Type = SqlDbType.NVarChar; int reve1_Size = 4000; SqlDbType text2_Type = SqlDbType.NText; //int text2_Size = 1500; SqlDbType reve2_Type = SqlDbType.NText; //int reve2_Size = 4000; if (processlist == null || processlist.Count == 0) return; //有一部分项是不需要更新文本的(例如:只有版本或恢复信息发生了变化),把这部分的ID取出来,一次性更新以提高性能 List<int> needUpdateButTextNotChangedIds = processlist.GetNeedUpdateButTextNotChangedKeys(); using (SqlQuery query = new SqlQuery()) { StringBuffer sql = new StringBuffer(); //前面取出的可以一次性更新版本而无需更新文本的部分项,在此批量更新 if (needUpdateButTextNotChangedIds.Count > 0) { sql += @"UPDATE " + table + " SET KeywordVersion = @NewVersion WHERE " + primaryKey + " IN (@NeedUpdateButTextNotChangedIds);"; query.CreateParameter<string>("@NewVersion", processlist.Version, SqlDbType.VarChar, 32); query.CreateInParameter("@NeedUpdateButTextNotChangedIds", needUpdateButTextNotChangedIds); } int i = 0; foreach (Revertable2<BlogArticle> item in processlist) { //此项确实需要更新,且不只是版本发生了变化 if (item.NeedUpdate && item.OnlyVersionChanged == false) { sql.InnerBuilder.AppendFormat(@"EXEC {1} @ID_{0}, @KeywordVersion_{0}, @Text1_{0}, @Reverter1_{0}, @Text2_{0}, @Reverter2_{0};", i, procedure); query.CreateParameter<int>("@ID_" + i, item.Value.GetKey(), SqlDbType.Int); //如果文本1或文本2发生了变化,更新 if (item.Text1Changed || item.Text2Changed) { query.CreateParameter<string>("@KeywordVersion_" + i, item.Value.KeywordVersion, SqlDbType.VarChar, 32); //文本1发生了变化 if (item.Text1Changed) query.CreateParameter<string>("@Text1_" + i, item.Value.Text1, text1_Type, text1_Size); else query.CreateParameter<string>("@Text1_" + i, null, text1_Type, text1_Size); //文本2发生了变化 if (item.Text2Changed) query.CreateParameter<string>("@Text2_" + i, item.Value.Text2, text2_Type/*, text2_Size*/); else query.CreateParameter<string>("@Text2_" + i, null, text2_Type/*, text2_Size*/); } else { query.CreateParameter<string>("@KeywordVersion_" + i, null, SqlDbType.VarChar, 32); query.CreateParameter<string>("@Text1_" + i, null, text1_Type, text1_Size); query.CreateParameter<string>("@Text2_" + i, null, text2_Type/*, text2_Size*/); } //如果恢复信息1发生了变化,更新 if (item.Reverter1Changed) query.CreateParameter<string>("@Reverter1_" + i, item.Reverter1, reve1_Type, reve1_Size); else query.CreateParameter<string>("@Reverter1_" + i, null, reve1_Type, reve1_Size); //如果恢复信息2发生了变化,更新 if (item.Reverter2Changed) query.CreateParameter<string>("@Reverter2_" + i, item.Reverter2, reve2_Type); else query.CreateParameter<string>("@Reverter2_" + i, null, reve2_Type); i++; } } query.CommandText = sql.ToString(); query.ExecuteNonQuery(); } }
public bool Update2 <T>(Revertable2Collection <T> revertables) where T : ITextRevertable2 { if (revertables == null) { return(false); } bool result = false; foreach (Revertable2 <T> revertable in revertables) { if (revertable == null) { continue; } string text1 = revertable.Value.Text1; string text2 = revertable.Value.Text2; string textReverter1 = revertable.Reverter1; string textReverter2 = revertable.Reverter2; string version = revertable.Value.KeywordVersion; string originalText1 = Revert(text1, version, textReverter1); revertable.OriginalText1 = originalText1; revertable.Value.SetOriginalText1(originalText1); string originalText2 = Revert(text2, version, textReverter2); revertable.OriginalText2 = originalText2; revertable.Value.SetOriginalText2(originalText2); //版本不同,确实需要更新 if (StringUtil.EqualsIgnoreCase(version, this.Version) == false) { result = true; //版本肯定发生了变化 revertable.VersionChanged = true; //1 string newReverter1, newVersion; string newText1 = Replace(originalText1, out newVersion, out newReverter1); //比较恢复信息,如果发生了变化,则给ReverterChanged设置为true; if (newReverter1 != textReverter1) { revertable.Reverter1Changed = true; } //比较内容,如果发生了变化,则给TextChanged设置为true; if (newText1 != text1) { revertable.Text1Changed = true; } revertable.Reverter1 = newReverter1; revertable.Value.SetNewRevertableText1(newText1, newVersion); //2 string newReverter2; string newText2 = Replace(originalText2, out newVersion, out newReverter2); //比较恢复信息,如果发生了变化,则给ReverterChanged设置为true; if (newReverter2 != textReverter2) { revertable.Reverter2Changed = true; } //比较内容,如果发生了变化,则给TextChanged设置为true; if (newText2 != text2) { revertable.Text2Changed = true; } revertable.Reverter2 = newReverter2; revertable.Value.SetNewRevertableText2(newText2, newVersion); } } return(result); }
public override Revertable2Collection<BlogArticle> GetBlogArticlesWithReverters(IEnumerable<int> articleIDs) { if (ValidateUtil.HasItems(articleIDs) == false) return null; Revertable2Collection<BlogArticle> articles = new Revertable2Collection<BlogArticle>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, SubjectReverter = ISNULL(R.SubjectReverter, ''), ContentReverter = ISNULL(R.ContentReverter, '') FROM bx_BlogArticles A WITH(NOLOCK) LEFT JOIN bx_BlogArticleReverters R WITH(NOLOCK) ON R.ArticleID = A.ArticleID WHERE A.ArticleID IN (@ArticleIDs)"; query.CreateInParameter<int>("@ArticleIDs", articleIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string subjectReverter = reader.Get<string>("SubjectReverter"); string contentReverter = reader.Get<string>("ContentReverter"); BlogArticle article = new BlogArticle(reader); articles.Add(article, subjectReverter, contentReverter); } } } return articles; }
public override Revertable2Collection<Album> GetAlbumsWithReverters(IEnumerable<int> albumIds) { if (ValidateUtil.HasItems(albumIds) == false) return null; Revertable2Collection<Album> albums = new Revertable2Collection<Album>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @"SELECT A.*, NameReverter = ISNULL(R.NameReverter, ''), DescriptionReverter = ISNULL(R.DescriptionReverter, '') FROM bx_Albums A WITH(NOLOCK) LEFT JOIN bx_AlbumReverters R WITH(NOLOCK) ON R.AlbumID = A.AlbumID WHERE A.AlbumID IN (@AlbumIds)"; query.CreateInParameter<int>("@AlbumIds", albumIds); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string nameReverter = reader.Get<string>("NameReverter"); string descriptionReverter = reader.Get<string>("DescriptionReverter"); Album album = new Album(reader); albums.Add(album, nameReverter, descriptionReverter); } } } return albums; }
public override Revertable2Collection<Photo> GetPhotosWithReverters(IEnumerable<int> photoIds) { if (ValidateUtil.HasItems(photoIds) == false) return null; Revertable2Collection<Photo> photos = new Revertable2Collection<Photo>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @"SELECT P.*, NameReverter = ISNULL(R.NameReverter, ''), DescriptionReverter = ISNULL(R.DescriptionReverter, '') FROM bx_Photos P WITH(NOLOCK) LEFT JOIN bx_PhotoReverters R WITH(NOLOCK) ON P.PhotoID = R.PhotoID WHERE P.PhotoID IN (@PhotoIds)"; query.CreateInParameter<int>("@PhotoIds", photoIds); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string nameReverter = reader.Get<string>("NameReverter"); string descriptionReverter = reader.Get<string>("DescriptionReverter"); Photo photo = new Photo(reader); photos.Add(photo, nameReverter, descriptionReverter); } } } return photos; }
/// <summary> /// 更新相册的关键字 /// </summary> /// <param name="albumsWithReverters"></param> public abstract void UpdatePhotoKeywords(Revertable2Collection <Photo> photosWithReverters);
/// <summary> /// 更新关键字 /// </summary> /// <param name="processlist">要处理的列表</param> public abstract void UpdateBlogArticleKeywords(Revertable2Collection <BlogArticle> processlist);
/// <summary> /// 更新相册的关键字 /// </summary> /// <param name="albumsWithReverters"></param> public abstract void UpdateAlbumKeywords(Revertable2Collection <Album> albumsWithReverters);
public override Revertable2Collection<PostV5> GetPostsWithReverters(IEnumerable<int> postIDs) { if (ValidateUtil.HasItems(postIDs) == false) return null; Revertable2Collection<PostV5> posts = new Revertable2Collection<PostV5>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, SubjectReverter = ISNULL(R.SubjectReverter, ''), ContentReverter = ISNULL(R.ContentReverter, '') FROM bx_Posts A WITH(NOLOCK) LEFT JOIN bx_PostReverters R WITH(NOLOCK) ON R.PostID = A.PostID WHERE A.PostID IN (@PostIDs)"; query.CreateInParameter<int>("@PostIDs", postIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string subjectReverter = reader.Get<string>("SubjectReverter"); string contentReverter = reader.Get<string>("ContentReverter"); PostV5 post = new PostV5(reader); posts.Add(post, subjectReverter, contentReverter); } } } return posts; }
//public override void TryUpdateKeyword(TextReverterCollection_Temp replaceKeywordContents) //{ // using (SqlQuery query = new SqlQuery()) // { // StringBuilder sql = new StringBuilder(); // int i = 0; // foreach (TextReverter_Temp content in replaceKeywordContents) // { // sql.AppendFormat(@"UPDATE [bx_Shares] SET [Description] = @Description_{0}, [DescriptionReverter] = @DescriptionReverter_{0} WHERE [ShareID] = @ShareID_{0};", i); // query.CreateParameter<string>("@Description_" + i, content.Text1, SqlDbType.NVarChar, 500); // query.CreateParameter<string>("@DescriptionReverter_" + i, content.TextReverter1, SqlDbType.NVarChar, 500); // query.CreateParameter<int>("@ShareID_" + i, content.ID, SqlDbType.Int); // i++; // } // query.CommandText = sql.ToString(); // query.ExecuteNonQuery(); // } //} public override Revertable2Collection<Share> GetSharesWithReverters(IEnumerable<int> shareIDs) { if (ValidateUtil.HasItems(shareIDs) == false) return null; Revertable2Collection<Share> shares = new Revertable2Collection<Share>(); using (SqlQuery query = new SqlQuery()) { query.CommandText = @" SELECT A.*, SubjectReverter = ISNULL(R.SubjectReverter, ''), DescriptionReverter = ISNULL(R.DescriptionReverter, '') FROM [bx_SharesView] A WITH(NOLOCK) LEFT JOIN bx_UserShareReverters R WITH(NOLOCK) ON R.UserShareID = A.UserShareID WHERE A.ShareID IN (@ShareIDs)"; query.CreateInParameter<int>("@ShareIDs", shareIDs); using (XSqlDataReader reader = query.ExecuteReader()) { while (reader.Read()) { string subjectReverter = reader.Get<string>("SubjectReverter"); string descriptionReverter = reader.Get<string>("DescriptionReverter"); Share share = new Share(reader); shares.Add(share, subjectReverter, descriptionReverter); } } } return shares; }
/// <summary> /// 更新关键字 /// </summary> /// <param name="processlist">要处理的列表</param> public abstract void UpdateShareKeywords(Revertable2Collection <Share> processlist);
public abstract void UpdatePostKeywords(Revertable2Collection <PostV5> processlist);