Exemplo n.º 1
0
        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();
            }
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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;
        }
Exemplo n.º 4
0
        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;
        }
Exemplo n.º 5
0
        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;
        }
Exemplo n.º 6
0
 /// <summary>
 /// 更新相册的关键字
 /// </summary>
 /// <param name="albumsWithReverters"></param>
 public abstract void UpdatePhotoKeywords(Revertable2Collection <Photo> photosWithReverters);
Exemplo n.º 7
0
 /// <summary>
 /// 更新关键字
 /// </summary>
 /// <param name="processlist">要处理的列表</param>
 public abstract void UpdateBlogArticleKeywords(Revertable2Collection <BlogArticle> processlist);
Exemplo n.º 8
0
 /// <summary>
 /// 更新相册的关键字
 /// </summary>
 /// <param name="albumsWithReverters"></param>
 public abstract void UpdateAlbumKeywords(Revertable2Collection <Album> albumsWithReverters);
Exemplo n.º 9
0
        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;
        }
Exemplo n.º 10
0
        //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;
        }
Exemplo n.º 11
0
 /// <summary>
 /// 更新关键字
 /// </summary>
 /// <param name="processlist">要处理的列表</param>
 public abstract void UpdateShareKeywords(Revertable2Collection <Share> processlist);
Exemplo n.º 12
0
 public abstract void UpdatePostKeywords(Revertable2Collection <PostV5> processlist);