Beispiel #1
0
        public override DeleteResult DeleteCommentsByFilter(AdminCommentFilter filter, int operatorUserID, IEnumerable <Guid> excludeRoleIDs, bool getDeleteResult)
        {
            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, true, operatorUserID, excludeRoleIDs);

                string sql = string.Empty;

                if (getDeleteResult)
                {
                    sql = @"SELECT [UserID],COUNT(*) AS [Count] FROM [bx_Comments] {0} GROUP BY [UserID];";
                }
                sql += "DELETE FROM bx_Comments {0};";


                query.CommandText = string.Format(sql, conditions);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();
                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get <int>("UserID"), reader.Get <int>("Count"));
                    }
                    return(deleteResult);
                }
            }
        }
Beispiel #2
0
        public DeleteResult Check(TKey id)
        {
            var result = new DeleteResult();

            foreach (var reference in _references)
            {
                var count = reference.Count(id, _context);

                if (count > 0)
                {
                    result.Add(count, reference.Type);
                }
            }

            return(result);
        }
Beispiel #3
0
        public override DeleteResult DeleteDoingsBySearch(AdminDoingFilter filter, IEnumerable <Guid> excludeRoleIDs, int deleteTopCount, out int deletedCount)
        {
            deletedCount = 0;

            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, excludeRoleIDs, true);

                StringBuffer sql = new StringBuffer();

                sql += @"
DECLARE @DeleteData table (UserID int, DoingID int);

INSERT INTO @DeleteData SELECT TOP (@TopCount) [UserID],[DoingID] FROM [bx_Doings] " + conditions + @";

DELETE [bx_Doings] WHERE DoingID IN (SELECT [DoingID] FROM @DeleteData);

SELECT @@ROWCOUNT;

SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];";

                query.CreateTopParameter("@TopCount", deleteTopCount);

                query.CommandText = sql.ToString();

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    if (reader.Read())
                    {
                        deletedCount = reader.Get <int>(0);
                    }

                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deleteResult.Add(reader.Get <int>("UserID"), reader.Get <int>("Count"));
                        }
                    }

                    return(deleteResult);
                }
            }
        }
Beispiel #4
0
        public override DeleteResult DeleteDoings(int operatorID, IEnumerable <int> doingIDs, IEnumerable <Guid> excludeRoleIDs)
        {
            using (SqlQuery query = new SqlQuery())
            {
                string excludeRolesSql = DaoUtil.GetExcludeRoleSQL("[UserID]", excludeRoleIDs, query);

                if (string.IsNullOrEmpty(excludeRolesSql) == false)
                {
                    excludeRolesSql = " AND ([UserID] = @UserID OR " + excludeRolesSql + ")";
                }

                string sql = @"
DECLARE @DeleteData table (UserID int, DoingID int);

INSERT INTO @DeleteData SELECT [UserID],[DoingID] FROM [bx_Doings] WHERE [DoingID] IN (@DoingIDs)" + excludeRolesSql + @";

DELETE [bx_Doings] WHERE DoingID IN (SELECT [DoingID] FROM @DeleteData);

SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];";

                query.CommandText = sql;

                query.CreateInParameter <int>("@DoingIDs", doingIDs);
                query.CreateParameter <int>("@UserID", operatorID, SqlDbType.Int);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get <int>("UserID"), reader.Get <int>("Count"));
                    }

                    return(deleteResult);
                }
            }
        }
Beispiel #5
0
        /**************************************
         *      Delete开头的函数删除数据      *
         **************************************/

        public override DeleteResult DeleteBlogCategories(IEnumerable<int> categoryIDs, bool deleteArticle, int operatorID, IEnumerable<Guid> excludeRoleIDs)
        {
            using (SqlQuery query = new SqlQuery())
            {
                string excludeRolesSql = DaoUtil.GetExcludeRoleSQL("[UserID]", excludeRoleIDs, query);

                if (string.IsNullOrEmpty(excludeRolesSql) == false)
                    excludeRolesSql = " AND  ([UserID] = @UserID OR " + excludeRolesSql + ")";

                StringBuffer sql = new StringBuffer();

                sql += @"
DECLARE @DeleteData table (UserID int, [CategoryID] int, [ArticleCount] int);

INSERT INTO @DeleteData SELECT [A].[UserID],[A].[CategoryID],(SELECT COUNT(*) FROM [bx_BlogArticles] AS [B] WHERE [B].[CategoryID]=[A].[CategoryID]) FROM [bx_BlogCategories] AS [A] WHERE [A].[CategoryID] IN (@CategoryIDs)" + excludeRolesSql + ";";

                if (deleteArticle)
                {

                    sql += @"
DELETE [bx_BlogCategories] WHERE [CategoryID] IN (SELECT [CategoryID] FROM @DeleteData);";

                }
                else
                {

                    sql += @"
UPDATE [bx_BlogArticles] SET [CategoryID] = 0 WHERE [CategoryID] IN (SELECT [CategoryID] FROM @DeleteData);";

                }

                sql += @"
DELETE [bx_BlogCategories] WHERE [CategoryID] IN (SELECT [CategoryID] FROM @DeleteData);

SELECT [UserID],SUM([ArticleCount]) AS [Count] FROM @DeleteData GROUP BY [UserID];";

                query.CreateInParameter("@CategoryIDs", categoryIDs);
                query.CreateParameter<int>("@UserID", operatorID, SqlDbType.Int);

                query.CommandText = sql.ToString();

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }

                    return deleteResult;
                }
            }
        }
Beispiel #6
0
        public override DeleteResult DeleteBlogArticlesBySearch(AdminBlogArticleFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, int topCount, out int deletedCount)
        {

            deletedCount = 0;

            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, operatorUserID, excludeRoleIDs, true);

                StringBuffer sql = new StringBuffer();

                sql += @"
DECLARE @DeleteData table (UserID int, ArticleID int);

INSERT INTO @DeleteData SELECT TOP (@TopCount) [UserID],[ArticleID] FROM [bx_BlogArticles] " + conditions + @";

DELETE [bx_BlogArticles] WHERE ArticleID IN (SELECT [ArticleID] FROM @DeleteData);

SELECT @@ROWCOUNT;

SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];";

                query.CreateTopParameter("@TopCount", topCount);

                query.CommandText = sql.ToString();

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    if (reader.Read())
                        deletedCount = reader.Get<int>(0);

                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                        }
                    }

                    return deleteResult;
                }
            }

        }
Beispiel #7
0
        /**************************************
         *      Delete开头的函数删除数据      *
         **************************************/

        public override DeleteResult DeleteBlogArticles(IEnumerable<int> articleIDs, int operatorID, IEnumerable<Guid> excludeRoleIDs)
        {
            using (SqlQuery query = new SqlQuery())
            {
                string excludeRolesSql = DaoUtil.GetExcludeRoleSQL("[UserID]", "[LastEditUserID]", operatorID, excludeRoleIDs, query);

                if (string.IsNullOrEmpty(excludeRolesSql) == false)
                    excludeRolesSql = " AND ([UserID] = @UserID OR " + excludeRolesSql + ")";

                string sql = @"
DECLARE @DeleteData table (UserID int, ArticleID int);

INSERT INTO @DeleteData SELECT [UserID],[ArticleID] FROM [bx_BlogArticles] WHERE [ArticleID] IN (@ArticleIDs)" + excludeRolesSql + @";

DELETE [bx_BlogArticles] WHERE ArticleID IN (SELECT [ArticleID] FROM @DeleteData);

SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];";

                query.CommandText = sql;

                query.CreateInParameter<int>("@ArticleIDs", articleIDs);
                query.CreateParameter<int>("@UserID", operatorID, SqlDbType.Int);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }

                    return deleteResult;
                }
            }
        }
Beispiel #8
0
        public override DeleteResult DeleteBlogCategoriesBySearch(AdminBlogCategoryFilter filter, bool deleteArticle, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, int topCount, out int deletedCount)
        {

            deletedCount = 0;

            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, excludeRoleIDs, true);

                StringBuffer sql = new StringBuffer();

                sql += @"
DECLARE @DeleteData table (UserID int, [CategoryID] int, [ArticleCount] int);

INSERT INTO @DeleteData SELECT TOP (@TopCount) [A].[UserID],[A].[CategoryID],(SELECT COUNT(*) FROM [bx_BlogArticles] AS [B] WHERE [B].[CategoryID]=[A].[CategoryID]) FROM [bx_BlogCategories] AS [A] " + conditions + ";";

                if (deleteArticle)
                {

                    sql += @"
DELETE [bx_BlogArticles] WHERE [CategoryID] IN (SELECT [CategoryID] FROM @DeleteData);";

                }
                else
                {

                    sql += @"
UPDATE [bx_BlogArticles] SET [CategoryID] = 0 WHERE [CategoryID] IN (SELECT [CategoryID] FROM @DeleteData);";

                }

                sql += @"
DELETE [bx_BlogCategories] WHERE [CategoryID] IN (SELECT [CategoryID] FROM @DeleteData);

SELECT @@ROWCOUNT;

SELECT [UserID],SUM([ArticleCount]) AS [Count] FROM @DeleteData GROUP BY [UserID];";

                query.CreateTopParameter("@TopCount", topCount);

                query.CommandText = sql.ToString();

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    if (reader.Read())
                        deletedCount = reader.Get<int>(0);

                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                        }
                    }

                    return deleteResult;
                }
            }

        }
Beispiel #9
0
        public override DeleteResult DeleteCommentsByFilter(AdminCommentFilter filter, int operatorUserID, IEnumerable<Guid> excludeRoleIDs, bool getDeleteResult)
        {

            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, true, operatorUserID, excludeRoleIDs);

                string sql = string.Empty;

                if (getDeleteResult)
                {
                    sql = @"SELECT [UserID],COUNT(*) AS [Count] FROM [bx_Comments] {0} GROUP BY [UserID];";
                }
                sql += "DELETE FROM bx_Comments {0};";


                query.CommandText = string.Format(sql, conditions);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();
                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }
                    return deleteResult;
                }
            }
        }
Beispiel #10
0
        public override DeleteResult DeleteAlbumsBySearch(AdminAlbumFilter filter, int operatorID, IEnumerable<Guid> excludeRoleIDs, int topCount, out int deletedCount, out int[] deletedPhotoIDs)
        {
            deletedCount = 0;

            using (SqlQuery query = new SqlQuery())
            {
                string conditions = BuildConditionsByFilter(query, filter, operatorID, excludeRoleIDs, true);

                StringBuffer sql = new StringBuffer();

                sql += @"
DECLARE @DeleteData table (UserID int, AlbumID int, PhotoCount int);

INSERT INTO @DeleteData SELECT TOP (@TopCount) [UserID],[A].[AlbumID],(SELECT COUNT(*) FROM [bx_Photos] AS [B] WHERE [B].[AlbumID]=[A].[AlbumID]) FROM [bx_Albums] AS [A] " + conditions + @";

DECLARE @DeletePhotos table (PhotoID int);

INSERT INTO @DeletePhotos SELECT PhotoID from bx_Photos WHERE AlbumID IN (SELECT [AlbumID] FROM @DeleteData);

DELETE [bx_Albums] WHERE [AlbumID] IN (SELECT [AlbumID] FROM @DeleteData);

SELECT @@ROWCOUNT;

SELECT [UserID],SUM([PhotoCount]) AS [Count] FROM @DeleteData GROUP BY [UserID];

SELECT [PhotoID] FROM @DeletePhotos;";

                query.CreateTopParameter("@TopCount", topCount);

                query.CommandText = sql.ToString();

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    if (reader.Read())
                        deletedCount = reader.Get<int>(0);

                    reader.NextResult();

                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }

                    reader.NextResult();

                    List<int> deletePhotos = new List<int>();

                    while (reader.Read())
                    {
                        deletePhotos.Add(reader.Get<int>(0));
                    }

                    deletedPhotoIDs = deletePhotos.ToArray();

                    return deleteResult;
                }
            }
        }
Beispiel #11
0
        /**************************************
         *      Delete开头的函数删除数据      *
         **************************************/

        public override DeleteResult DeleteAlbums(IEnumerable<int> albumIDs, int operatorID, IEnumerable<Guid> excludeRoleIDs, out int[] deletePhotoIDs)
        {

            using (SqlQuery query = new SqlQuery())
            {
                string excludeRolesSql = DaoUtil.GetExcludeRoleSQL("[UserID]", "[LastEditUserID]", operatorID, excludeRoleIDs, query);

                if (string.IsNullOrEmpty(excludeRolesSql) == false)
                    excludeRolesSql = " AND ([UserID] = @UserID OR " + excludeRolesSql + ")";

                string sql = @"
DECLARE @DeleteData table (UserID int, AlbumID int, PhotoCount int);

INSERT INTO @DeleteData SELECT [A].[UserID],[A].[AlbumID],(SELECT COUNT(*) FROM [bx_Photos] AS [B] WHERE [B].[AlbumID]=[A].[AlbumID]) FROM [bx_Albums] AS [A]  WHERE [A].[AlbumID] IN (@AlbumIDs)" + excludeRolesSql + @";

DECLARE @DeletePhotos table (PhotoID int);

INSERT INTO @DeletePhotos SELECT PhotoID from bx_Photos WHERE AlbumID IN (SELECT [AlbumID] FROM @DeleteData);

DELETE [bx_Albums] WHERE [AlbumID] IN (SELECT [AlbumID] FROM @DeleteData);

SELECT [UserID],SUM([PhotoCount]) AS [Count] FROM @DeleteData GROUP BY [UserID];

SELECT [PhotoID] FROM @DeletePhotos;";

                query.CommandText = sql;

                query.CreateInParameter<int>("@AlbumIDs", albumIDs);
                query.CreateParameter<int>("@UserID", operatorID, SqlDbType.Int);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    //List<string> deletedFileIDList = new List<string>();

                    //while (reader.Read())
                    //{
                    //    deletedFileIDList.Add(reader.Get<string>(0));
                    //}

                    //deletedFileIDs = deletedFileIDList.ToArray();

                    //if (reader.NextResult())
                    //{
                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }

                    reader.NextResult();

                    List<int> deletePhotos = new List<int>();

                    while (reader.Read())
                    {
                        deletePhotos.Add(reader.Get<int>(0));
                    }

                    deletePhotoIDs = deletePhotos.ToArray();
                    //}

                    return deleteResult;
                }
            }
        }
Beispiel #12
0
        /**************************************
         *      Delete开头的函数删除数据      *
         **************************************/

        public override DeleteResult DeletePhotos(IEnumerable<int> deleteIDs, int operatorID, IEnumerable<Guid> excludeRoleIDs, out int[] deletedPhotoIDs)
        {
            using (SqlQuery query = new SqlQuery())
            {
                string excludeRolesSql = DaoUtil.GetExcludeRoleSQL("[UserID]", "[LastEditUserID]", operatorID, excludeRoleIDs, query);

                if (string.IsNullOrEmpty(excludeRolesSql) == false)
                    excludeRolesSql = " AND ([UserID] = @UserID OR " + excludeRolesSql + ")";

                string sql = @"
DECLARE @DeleteData table (UserID int, PhotoID int);

INSERT INTO @DeleteData SELECT [UserID],[PhotoID] FROM [bx_Photos] WHERE [PhotoID] IN (@PhotoIDs)" + excludeRolesSql + @";

UPDATE [bx_Albums] SET [CoverPhotoID] = NULL, [Cover] = '' WHERE CoverPhotoID IN (SELECT [PhotoID] FROM @DeleteData);

DELETE [bx_Photos] WHERE PhotoID IN (SELECT [PhotoID] FROM @DeleteData);

SELECT [UserID],COUNT(*) AS [Count] FROM @DeleteData GROUP BY [UserID];

SELECT [PhotoID] FROM @DeleteData";

                query.CommandText = sql;

                query.CreateInParameter<int>("@PhotoIDs", deleteIDs);
                query.CreateParameter<int>("@UserID", operatorID, SqlDbType.Int);

                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }

                    reader.NextResult();

                    List<int> deletedPhotos = new List<int>();

                    while (reader.Read())
                    {
                        deletedPhotos.Add(reader.Get<int>(0));
                    }

                    deletedPhotoIDs = deletedPhotos.ToArray();

                    return deleteResult;
                }
            }
        }
Beispiel #13
0
        public override DeleteResult DeleteSearchPosts(PostFilter filter, IEnumerable<Guid> excludeRoleIDs, bool getDeleteResult, int topCount, out int deletedCount, out List<int> threadIDs)
        {

            using (SqlQuery query = new SqlQuery())
            {

                string conditon = BuilderSearchPostCondition(filter, excludeRoleIDs, query, false);

                query.CommandText = @"
DECLARE @Table table(TempPostID int,TempTopicID int,TempUserID int,TempForumID int,TempThreadStatus tinyint);
INSERT INTO @Table SELECT TOP (@TopCount) [PostID],[ThreadID],[UserID],[ForumID],[ThreadStatus] FROM [bx_Posts] WHERE " + conditon + @";
SELECT DISTINCT TempTopicID FROM @Table;
";

                if (getDeleteResult)
                {
                    query.CommandText += @"
SELECT [TempUserID],[TempForumID],COUNT(*) AS [Count] FROM @Table WHERE TempThreadStatus<4 GROUP BY [TempUserID],[TempForumID];";

                }


                query.CommandText = query.CommandText + @"
DELETE [bx_Posts] WHERE PostID IN(SELECT TempPostID FROM @Table);
SELECT @@ROWCOUNT;
";
                query.CreateTopParameter("@TopCount", topCount);

                threadIDs = new List<int>();
                deletedCount = 0;
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        int threadID = reader.Get<int>("TempTopicID");
                        if (threadIDs.Contains(threadID) == false)
                            threadIDs.Add(threadID);
                    }

                    if (getDeleteResult)
                    {
                        if (reader.NextResult())
                        {
                            while (reader.Read())
                            {
                                deleteResult.Add(reader.Get<int>("TempUserID"), reader.Get<int>("Count"), reader.Get<int>("TempForumID"));
                            }
                        }
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deletedCount = reader.Get<int>(0);
                        }
                    }
                    return deleteResult;
                }
            }
        }
Beispiel #14
0
        public override DeleteResult DeleteSearchTopics(TopicFilter filter, IEnumerable<Guid> excludeRoleIDs, bool getDeleteResult, int topCount, out int deletedCount, out List<int> threadIDs)
        {

            using (SqlQuery query = new SqlQuery())
            {

                string conditon = BuilderSearchThreadCondition(filter, excludeRoleIDs, query, false);

                query.CommandText = @"
DECLARE @Table table(TempTopicID int,TempUserID int,TempForumID int,TempThreadStatus tinyint);
INSERT INTO @Table SELECT TOP (@TopCount) [ThreadID],[PostUserID],[ForumID],[ThreadStatus] FROM [bx_TopicsWithContents] WITH (NOLOCK) WHERE " + conditon + @";
SELECT TempTopicID FROM @Table;
--SELECT FileID FROM [bx_Attachments] WHERE PostID IN(SELECT PostID FROM [bx_Posts] WHERE ThreadID IN(SELECT TempTopicID FROM @Table))
--    AND FileID NOT IN(SELECT FileID FROM [bx_Attachments] WHERE PostID NOT IN(SELECT PostID FROM [bx_Posts] WHERE ThreadID IN(SELECT TempTopicID FROM @Table)));
";

                if (getDeleteResult)
                {
                    query.CommandText += @"
SELECT [TempUserID],[TempForumID],COUNT(*) AS [Count] FROM @Table WHERE TempThreadStatus<4 GROUP BY [TempUserID],[TempForumID];";

                }


                query.CommandText = query.CommandText + @"
DELETE [bx_Threads] WHERE ThreadID IN(SELECT TempTopicID FROM @Table);
SELECT @@ROWCOUNT;
";
                query.CreateTopParameter("@TopCount", topCount);

                threadIDs = new List<int>();
                //                fileIDs = new List<string>();
                deletedCount = 0;
                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        threadIDs.Add(reader.Get<int>("TempTopicID"));
                    }
                    //if (reader.NextResult())
                    //{
                    //    while (reader.Read())
                    //    {
                    //        fileIDs.Add(reader.Get<string>("FileID"));
                    //    }
                    //}

                    if (getDeleteResult)
                    {
                        if (reader.NextResult())
                        {
                            while (reader.Read())
                            {
                                deleteResult.Add(reader.Get<int>("TempUserID"), reader.Get<int>("Count"), reader.Get<int>("TempForumID"));
                            }
                        }
                    }
                    if (reader.NextResult())
                    {
                        while (reader.Read())
                        {
                            deletedCount = reader.Get<int>(0);
                        }
                    }
                    return deleteResult;
                }
            }
        }
Beispiel #15
0
        public override DeleteResult DeleteSearchShares(ShareFilter filter, IEnumerable<Guid> excludeRoleIDs, bool getDeleteResult)
        {

            using (SqlQuery query = new SqlQuery())
            {

                //string condition = @" 1 = 1 "
                //        + (filter.UserID == null ? "" : ("AND [UserID] = @UserID "))
                //        + (filter.ShareID == null ? "" : ("AND [ShareID] = @ShareID "))
                //        + (filter.ShareCatagory == ShareCatagory.All ? "" : ("AND [Type] = @Type "))
                //        + (filter.PrivacyType == null ? "" : ("AND [PrivacyType] = @PrivacyType "))
                //        + (filter.BeginDate == null ? "" : ("AND [CreateDate] > @BeginDate "))
                //        + (filter.EndDate == null ? "" : ("AND [CreateDate] < @EndDate "))
                //        + "AND " + DaoUtil.GetExcludeRoleSQL("[UserID]", excludeRoleIDs, query);

                SqlConditionBuilder condition = new SqlConditionBuilder(SqlConditionStart.Where);
                condition += (filter.UserID == null ? "" : ("AND [UserID] = @UserID "));
                condition += (filter.ShareID == null ? "" : ("AND [ShareID] = @ShareID "));
                condition += (filter.ShareType == ShareType.All ? "" : ("AND [Type] = @Type "));
                condition += (filter.PrivacyType == null ? "" : ("AND [PrivacyType] = @PrivacyType "));
                condition += (filter.BeginDate == null ? "" : ("AND [CreateDate] > @BeginDate "));
                condition += (filter.EndDate == null ? "" : ("AND [CreateDate] < @EndDate "));
                condition.AppendAnd(DaoUtil.GetExcludeRoleSQL("[UserID]", excludeRoleIDs, query));

                if (getDeleteResult)
                {
                    query.CommandText = @"
SELECT [UserID],COUNT(*) AS [Count] FROM [bx_SharesView] " + condition.ToString() + " GROUP BY [UserID];";

                }
                else
                    query.CommandText = string.Empty;


                query.CommandText = query.CommandText + @"
DELETE [bx_SharesView] " + condition.ToString();


                query.CreateParameter<int?>("@UserID", filter.UserID, SqlDbType.Int);
                query.CreateParameter<int?>("@ShareID", filter.ShareID, SqlDbType.Int);
                query.CreateParameter<int>("@Type", (int)filter.ShareType, SqlDbType.Int);
                query.CreateParameter<int?>("@PrivacyType", filter.PrivacyType == null ? 0 : (int)filter.PrivacyType, SqlDbType.Int);
                query.CreateParameter<DateTime?>("@BeginDate", filter.BeginDate, SqlDbType.DateTime);
                query.CreateParameter<DateTime?>("@EndDate", filter.EndDate, SqlDbType.DateTime);



                using (XSqlDataReader reader = query.ExecuteReader())
                {
                    DeleteResult deleteResult = new DeleteResult();

                    while (reader.Read())
                    {
                        deleteResult.Add(reader.Get<int>("UserID"), reader.Get<int>("Count"));
                    }
                    return deleteResult;
                }
            }
        }