public void LinqCreateNotLikeConditionTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;

            SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.NotLike("TestColumn1", "test1");
            SqlBasicParameterCondition actualCondition   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLike("test1")) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition, actualCondition);

            SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.NotLikeAll("TestColumn1", "test2");
            SqlBasicParameterCondition actualCondition2   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLikeAll("test2")) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition2, actualCondition2);

            SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.NotLikeStartWith("TestColumn1", "test3");
            SqlBasicParameterCondition actualCondition3   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLikeStartWith("test3")) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition3, actualCondition3);

            SqlBasicParameterCondition expectedCondition4 = expectedConditionBuilder.NotLikeEndWith("TestColumn1", "test4");
            SqlBasicParameterCondition actualCondition4   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotLikeEndWith("test4")) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition4, actualCondition4);
        }
Пример #2
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">选择语句</param>
        /// <param name="topics">主题列表</param>
        /// <param name="includeHide">是否包含隐藏主题</param>
        /// <returns>当前语句</returns>
        internal static SelectCommand Where(this SelectCommand command, IList <ForumTopicEntity> topics, Boolean includeHide)
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            if (!includeHide)
            {
                temp      = c.Equal(ForumPostRepository.ISHIDE, false);
                condition = (condition == null ? temp : condition & temp);
            }

            if (topics != null)
            {
                temp = c.In <Int32>(ForumPostRepository.TOPICID, () =>
                {
                    List <Int32> ids = new List <Int32>();

                    for (Int32 i = 0; i < topics.Count; i++)
                    {
                        ids.Add(topics[i].TopicID);
                    }

                    return(ids);
                });

                condition = (condition == null ? temp : condition & temp);
            }

            return(command.Where(condition));
        }
        public void CreateNullableConditionTest()
        {
            AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;

            SelectCommand       baseCommand      = fakeDb.CreateSelectCommand("");
            SqlConditionBuilder conditionBuilder = baseCommand.ConditionBuilder;

            AbstractSqlCondition baseCondition = conditionBuilder.Equal("TestColumn2", 1);

            AbstractSqlCondition expectedCondition = baseCondition & null;
            AbstractSqlCondition actualCondition   = baseCondition;

            Assert.AreEqual(expectedCondition, actualCondition);

            AbstractSqlCondition expectedCondition2 = null & baseCondition;
            AbstractSqlCondition actualCondition2   = baseCondition;

            Assert.AreEqual(expectedCondition2, actualCondition2);

            AbstractSqlCondition expectedCondition3 = baseCondition | null;
            AbstractSqlCondition actualCondition3   = baseCondition;

            Assert.AreEqual(expectedCondition3, actualCondition3);

            AbstractSqlCondition expectedCondition4 = null | baseCondition;
            AbstractSqlCondition actualCondition4   = baseCondition;

            Assert.AreEqual(expectedCondition4, actualCondition4);
        }
Пример #4
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">选择语句</param>
        /// <param name="type">主题类型</param>
        /// <param name="relativeID">相关ID</param>
        /// <param name="includeHide">是否包含隐藏主题</param>
        /// <returns>当前语句</returns>
        internal static SelectCommand Where(this SelectCommand command, ForumTopicType type, Int32 relativeID, Boolean includeHide)
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            //不包含隐藏
            if (!includeHide)
            {
                temp      = c.Equal(ForumTopicRepository.ISHIDE, false);
                condition = (condition == null ? temp : condition & temp);
            }

            if (type == ForumTopicType.Default)                                                  //普通讨论板中包括题目专属讨论板的帖子
            {
                temp      = c.LessThan(ForumTopicRepository.TYPE, (Byte)ForumTopicType.Contest); //普通0,题目1,竞赛2
                condition = (condition == null ? temp : condition & temp);
            }
            else//竞赛或题目专属讨论板只有专属帖子
            {
                temp      = c.Equal(ForumTopicRepository.TYPE, (Byte)type) & c.Equal(ForumTopicRepository.RELATIVEID, relativeID);
                condition = (condition == null ? temp : condition & temp);
            }

            return(command.Where(condition));
        }
Пример #5
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">相关语句</param>
        /// <param name="ids">逗号分隔的实体ID</param>
        /// <param name="cid">竞赛ID</param>
        /// <param name="pid">题目ID</param>
        /// <param name="userName">用户名</param>
        /// <param name="languageType">提交语言</param>
        /// <param name="resultType">提交结果</param>
        /// <param name="startDate">开始时间</param>
        /// <param name="endDate">结束时间</param>
        /// <returns>当前语句</returns>
        internal static T Where <T>(this T command, String ids, Int32 cid, Int32 pid, String userName, LanguageType languageType, ResultType?resultType, DateTime?startDate, DateTime?endDate) where T : AbstractSqlCommandWithWhere
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            //提交ID
            if (!String.IsNullOrEmpty(ids))
            {
                temp      = c.InInt32(SolutionRepository.SOLUTIONID, ids, ',');
                condition = (condition == null ? temp : condition & temp);
            }

            //竞赛ID
            if (cid >= 0)
            {
                temp      = c.Equal(SolutionRepository.CONTESTID, cid);
                condition = (condition == null ? temp : condition & temp);
            }

            //题目ID
            if (pid >= 0)
            {
                temp      = c.Equal(SolutionRepository.PROBLEMID, pid);
                condition = (condition == null ? temp : condition & temp);
            }

            //用户名
            if (!String.IsNullOrEmpty(userName))
            {
                temp      = c.Equal(SolutionRepository.USERNAME, userName);
                condition = (condition == null ? temp : condition & temp);
            }

            //提交程序语言
            if (!LanguageType.IsNull(languageType))
            {
                temp      = c.Equal(SolutionRepository.LANGUAGE, languageType.ID);
                condition = (condition == null ? temp : condition & temp);
            }

            //提交结果
            if (resultType.HasValue)
            {
                temp      = c.Equal(SolutionRepository.RESULT, (Byte)resultType.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            //开始时间
            if (startDate.HasValue || endDate.HasValue)
            {
                temp      = c.BetweenNullable <DateTime>(SolutionRepository.SUBMITTIME, startDate, endDate);
                condition = (condition == null ? temp : condition & temp);
            }

            command.Where(condition);

            return(command);
        }
        //todo: support for IN expression
        //[TestCase(typeof(PropertyIsIn), "SomeColumn IN (1, 2, 3, 4, 5)", "SomeColumn", "(1, 2, 3, 4, 5)")]
        public void TestComparisonExpressions(Type comparisonType, string conditionString, string column, string literal)
        {
            var builder = new SqlConditionBuilder(log);
            ISqlConditionExpression condition = builder.Build(conditionString);

            Assert.IsNotNull(condition);

            TestComparisonType(comparisonType, condition, column, literal);
        }
        public void Reversed_Parse_Test()
        {
            var binaryTreeBuilder = new SqlConditionBuilder(log);
            ISqlConditionExpression conditionBinaryTree = binaryTreeBuilder.Build(ExpZeros);

            var sqlStringBuilder = new SqlServerConditionStringBuilder();
            IUncheckedSqlCondition uncheckedSqlCondition = sqlStringBuilder.Build(conditionBinaryTree);

            Assert.AreEqual(Expected, uncheckedSqlCondition.SqlConditionString);
        }
        public void R_Test(Type gate, string conditionString)
        {
            var builder = new SqlConditionBuilder(log);
            ISqlConditionExpression condition = builder.Build(conditionString);

            Assert.IsNotNull(condition);

            Assert.IsInstanceOf <RightSideExpression>(condition);
            Assert.IsInstanceOf(gate, condition);
        }
        public void LinqCreateNotInConditionTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;

            SqlInsideParametersCondition expectedCondition = expectedConditionBuilder.NotInThese("TestColumn1", "1");
            SqlInsideParametersCondition actualCondition   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotInThese("1")) as SqlInsideParametersCondition;

            Assert.AreEqual(expectedCondition, actualCondition);

            SqlInsideParametersCondition expectedCondition2 = expectedConditionBuilder.NotInThese("TestColumn1", "1", "2", "3", "4", "5");
            SqlInsideParametersCondition actualCondition2   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.NotInThese("1", "2", "3", "4", "5")) as SqlInsideParametersCondition;

            Assert.AreEqual(expectedCondition2, actualCondition2);

            SqlInsideParametersCondition expectedCondition3 = expectedConditionBuilder.NotInThese("TestColumn2", 1, 2, 3, 4, 5);
            SqlInsideParametersCondition actualCondition3   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2.NotInThese(1, 2, 3, 4, 5)) as SqlInsideParametersCondition;

            Assert.AreEqual(expectedCondition3, actualCondition3);

            SqlInsideParametersCondition expectedCondition4 = expectedConditionBuilder.NotInThese("TestColumn5", 1, 2, 3, 4, 5);
            SqlInsideParametersCondition actualCondition4   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test5.NotInThese(1, 2, 3, 4, 5)) as SqlInsideParametersCondition;

            Assert.AreEqual(expectedCondition4, actualCondition4);

            TestEntityRepository repository = new TestEntityRepository(fakeDb);
            TestEntity           entity     = new TestEntity()
            {
                Test1 = "1", Test2 = 2, Test3 = 3.0, Test4 = DateTime.Now, Test8 = 8
            };

            SqlInsideCommandCondition expectedCondition5 = expectedConditionBuilder.NotIn("TestColumn4", repository.TableName, s =>
            {
                s.Query("TestColumn4")
                .Paged(10, 2)
                .Where <TestEntity>(c => c.Test1 == "test" && c.Test2 != 222 && c.Test4 < DateTime.Now)
                .OrderBy <TestEntity>(c => c.Test3, SqlOrderType.Desc);
            });

            Action <SelectCommand> createAnotherSelect = s =>
            {
                s.Query("TestColumn4")
                .Paged(10, 2)
                .Where <TestEntity>(sc => sc.Test1 == "test" && sc.Test2 != 222 && sc.Test4 < DateTime.Now)
                .OrderBy <TestEntity>(sc => sc.Test3, SqlOrderType.Desc);
            };

            SqlInsideCommandCondition actualCondition5 = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test4.NotIn <TestEntity>(createAnotherSelect)) as SqlInsideCommandCondition;

            Assert.AreEqual(expectedCondition5, actualCondition5);
        }
        public void LinqCreateBasicConditionTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;

            SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.Equal("TestColumn2", 123);
            SqlBasicParameterCondition actualCondition   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 == 123) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition, actualCondition);

            SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.NotEqual("TestColumn2", 123);
            SqlBasicParameterCondition actualCondition2   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 != 123) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition2, actualCondition2);

            SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.GreaterThan("TestColumn2", 123);
            SqlBasicParameterCondition actualCondition3   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 > 123) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition3, actualCondition3);

            SqlBasicParameterCondition expectedCondition4 = expectedConditionBuilder.LessThan("TestColumn2", 123);
            SqlBasicParameterCondition actualCondition4   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 < 123) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition4, actualCondition4);

            SqlBasicParameterCondition expectedCondition5 = expectedConditionBuilder.GreaterThanOrEqual("TestColumn2", 123);
            SqlBasicParameterCondition actualCondition5   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 >= 123) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition5, actualCondition5);

            SqlBasicParameterCondition expectedCondition6 = expectedConditionBuilder.LessThanOrEqual("TestColumn2", 123);
            SqlBasicParameterCondition actualCondition6   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 <= 123) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition6, actualCondition6);

            SqlBasicParameterCondition expectedCondition7 = expectedConditionBuilder.IsNotNull("TestColumn1");
            SqlBasicParameterCondition actualCondition7   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1 != null) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition7, actualCondition7);

            SqlBasicParameterCondition expectedCondition8 = expectedConditionBuilder.IsNull("TestColumn3");
            SqlBasicParameterCondition actualCondition8   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test3 == null) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition8, actualCondition8);

            SqlBasicParameterCondition expectedCondition10 = expectedConditionBuilder.EqualColumn("TestColumn2", "TestColumn3");
            SqlBasicParameterCondition actualCondition10   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 == c.Test3) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition10, actualCondition10);
        }
Пример #11
0
        public void CreateNotInConditionTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;
            SqlConditionBuilder actualConditionBuilder   = actualCommand.ConditionBuilder;

            SqlInsideParametersCondition expectedCondition = expectedConditionBuilder.NotInThese("TestColumn2", 1, 2, 3, 4, 5);
            SqlInsideParametersCondition actualCondition   = actualConditionBuilder.NotInInt32("TestColumn2", "1, 2, 3, 4, 5", ',');

            Assert.AreEqual(expectedCondition, actualCondition);
        }
        public void CreateNotConditionTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;
            SqlConditionBuilder actualConditionBuilder   = expectedCommand.ConditionBuilder;

            SqlBasicParameterCondition baseCondition     = expectedConditionBuilder.Equal("TestColumn2", 1);
            SqlNotCondition            expectedCondition = !baseCondition;
            SqlNotCondition            actualCondition   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => !(c.Test2 == 1)) as SqlNotCondition;

            Assert.AreEqual(expectedCondition, actualCondition);
        }
        public void LinqCreateConditionListTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;

            AbstractSqlCondition expectedCondition = expectedConditionBuilder.GreaterThanOrEqual("TestColumn2", 123) & expectedConditionBuilder.LessThan("TestColumn2", 456);
            AbstractSqlCondition actualCondition   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 >= 123 && c.Test2 < 456) as SqlConditionList;

            Assert.AreEqual(expectedCondition, actualCondition);

            AbstractSqlCondition expectedCondition2 = expectedConditionBuilder.GreaterThanOrEqual("TestColumn2", 123) | (expectedConditionBuilder.GreaterThan("TestColumn4", DateTime.Now) & expectedConditionBuilder.LessThan("TestColumn7", DateTime.Now.AddDays(7)));
            AbstractSqlCondition actualCondition2   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2 >= 123 || (c.Test4 > DateTime.Now && c.Test7 < DateTime.Now.AddDays(7))) as SqlConditionList;

            Assert.AreEqual(expectedCondition2, actualCondition2);
        }
Пример #14
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">相关语句</param>
        /// <param name="cid">竞赛ID</param>
        /// <param name="pid">题目ID</param>
        /// <param name="userName">用户名</param>
        /// <param name="languageType">提交语言</param>
        /// <param name="resultType">提交结果</param>
        /// <returns>当前语句</returns>
        internal static SelectCommand Where(this SelectCommand command, Int32 cid, Int32 pid, String userName, LanguageType languageType, ResultType?resultType)
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            //竞赛ID,非竞赛为-1
            if (cid >= 0)
            {
                temp      = c.Equal(SolutionRepository.CONTESTID, cid);
                condition = (condition == null ? temp : condition & temp);
            }

            //题目ID,如果为竞赛从竞赛题目顺序查找,否则从题目ID查找
            if (pid >= 0)
            {
                temp      = c.Equal((cid >= 0 ? SolutionRepository.CONTESTPROBLEMID : SolutionRepository.PROBLEMID), pid);
                condition = (condition == null ? temp : condition & temp);
            }

            //用户名
            if (!String.IsNullOrEmpty(userName))
            {
                temp      = c.Equal(SolutionRepository.USERNAME, userName);
                condition = (condition == null ? temp : condition & temp);
            }

            //提交程序语言
            if (!LanguageType.IsNull(languageType))
            {
                temp      = c.Equal(SolutionRepository.LANGUAGE, languageType.ID);
                condition = (condition == null ? temp : condition & temp);
            }

            //提交结果
            if (resultType.HasValue)
            {
                temp      = c.Equal(SolutionRepository.RESULT, (Byte)resultType.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            return(command.Where(condition));
        }
Пример #15
0
        public void CreateNotConditionTest()
        {
            AbstractDatabase fakeDb = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;

            SelectCommand       baseCommand      = fakeDb.CreateSelectCommand("");
            SqlConditionBuilder conditionBuilder = baseCommand.ConditionBuilder;

            SqlBasicParameterCondition baseCondition   = conditionBuilder.Equal("TestColumn2", 1);
            SqlNotCondition            actualCondition = !baseCondition;

            String expectedConditionClause = "(NOT((TestColumn2 = @PN_IDX_0)))";
            String actualConditionClause   = actualCondition.GetClauseText();

            DataParameter[] expectedParameters = baseCondition.GetAllParameters();
            DataParameter[] actualParameters   = baseCondition.GetAllParameters();

            Assert.AreEqual(expectedConditionClause, actualConditionClause);

            for (Int32 i = 0; i < expectedParameters.Length; i++)
            {
                Assert.AreEqual(expectedParameters[i], actualParameters[i]);
            }
        }
        public void LinqCreateIsNullConditionTest()
        {
            AbstractDatabase fakeDb          = DatabaseFactory.CreateDatabase("", "System.Data.SqlClient") as AbstractDatabase;
            SelectCommand    expectedCommand = fakeDb.CreateSelectCommand("");
            SelectCommand    actualCommand   = fakeDb.CreateSelectCommand("");

            SqlConditionBuilder expectedConditionBuilder = expectedCommand.ConditionBuilder;

            SqlBasicParameterCondition expectedCondition = expectedConditionBuilder.IsNull("TestColumn1");
            SqlBasicParameterCondition actualCondition   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test1.IsNull()) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition, actualCondition);

            SqlBasicParameterCondition expectedCondition2 = expectedConditionBuilder.IsNull("TestColumn2");
            SqlBasicParameterCondition actualCondition2   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test2.IsNull()) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition2, actualCondition2);

            SqlBasicParameterCondition expectedCondition3 = expectedConditionBuilder.IsNull("TestColumn5");
            SqlBasicParameterCondition actualCondition3   = SqlLinqCondition.Create <TestEntity>(actualCommand, c => c.Test5.IsNull()) as SqlBasicParameterCondition;

            Assert.AreEqual(expectedCondition3, actualCondition3);
        }
Пример #17
0
 /// <summary>
 /// 初始化新的有Where语句的Sql语句抽象类
 /// </summary>
 /// <param name="database">数据库</param>
 /// <param name="rootSource">创建时的根来源</param>
 /// <param name="tableName">表格名称</param>
 protected AbstractSqlCommandWithWhere(AbstractDatabase database, AbstractSqlCommand rootSource, String tableName)
     : base(database, rootSource, tableName)
 {
     this._conditionBuilder = new SqlConditionBuilder(this);
 }
Пример #18
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">选择语句</param>
        /// <param name="ftids">主题ID列表</param>
        /// <param name="userName">发帖人</param>
        /// <param name="title">主题标题</param>
        /// <param name="type">主题类型</param>
        /// <param name="relativeID">相关ID</param>
        /// <param name="isLocked">是否锁定</param>
        /// <param name="isHide">是否隐藏</param>
        /// <param name="startDate">发帖开始时间</param>
        /// <param name="endDate">发帖结束时间</param>
        /// <returns>当前语句</returns>
        internal static SelectCommand Where(this SelectCommand command, String ftids, String userName, String title, ForumTopicType?type, Int32 relativeID, Boolean?isLocked, Boolean?isHide, DateTime?startDate, DateTime?endDate)
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            //主题ID
            if (!String.IsNullOrEmpty(ftids))
            {
                temp      = c.InInt32(ForumTopicRepository.TOPICID, ftids, ',');
                condition = (condition == null ? temp : condition & temp);
            }

            //用户名
            if (!String.IsNullOrEmpty(userName))
            {
                temp      = c.LikeAll(ForumTopicRepository.USERNAME, userName);
                condition = (condition == null ? temp : condition & temp);
            }

            //主题标题
            if (!String.IsNullOrEmpty(title))
            {
                temp      = c.LikeAll(ForumTopicRepository.TITLE, title);
                condition = (condition == null ? temp : condition & temp);
            }

            //主题类型
            if (type.HasValue)
            {
                temp      = c.Equal(ForumTopicRepository.TYPE, (Byte)type.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            //相关ID
            if (relativeID >= 0)
            {
                temp      = c.Equal(ForumTopicRepository.RELATIVEID, relativeID);
                condition = (condition == null ? temp : condition & temp);
            }

            //是否锁定
            if (isLocked.HasValue)
            {
                temp      = c.Equal(ForumTopicRepository.ISLOCKED, isLocked.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            //是否隐藏
            if (isHide.HasValue)
            {
                temp      = c.Equal(ForumTopicRepository.ISHIDE, isHide.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            //发布日期范围
            if (startDate.HasValue || endDate.HasValue)
            {
                temp      = c.BetweenNullable <DateTime>(ForumTopicRepository.LASTDATE, startDate, endDate);
                condition = (condition == null ? temp : condition & temp);
            }

            return(command.Where(condition));
        }
Пример #19
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">选择语句</param>
        /// <param name="fpids">帖子ID列表</param>
        /// <param name="ftids">主题ID列表</param>
        /// <param name="userName">发帖用户名</param>
        /// <param name="title">帖子标题</param>
        /// <param name="content">帖子内容</param>
        /// <param name="isHide">是否隐藏</param>
        /// <param name="startDate">发帖开始时间</param>
        /// <param name="endDate">发帖结束时间</param>
        /// <param name="postip">发帖IP</param>
        /// <returns>当前语句</returns>
        internal static SelectCommand Where(this SelectCommand command, String fpids, String ftids, String userName, String title, String content, Boolean?isHide, DateTime?startDate, DateTime?endDate, String postip)
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            //帖子ID
            if (!String.IsNullOrEmpty(fpids))
            {
                temp      = c.InInt32(ForumPostRepository.POSTID, fpids, ',');
                condition = (condition == null ? temp : condition & temp);
            }

            //主题ID
            if (!String.IsNullOrEmpty(ftids))
            {
                temp      = c.InInt32(ForumPostRepository.TOPICID, ftids, ',');
                condition = (condition == null ? temp : condition & temp);
            }

            //用户名
            if (!String.IsNullOrEmpty(userName))
            {
                temp      = c.LikeAll(ForumPostRepository.USERNAME, userName);
                condition = (condition == null ? temp : condition & temp);
            }

            //帖子标题
            if (!String.IsNullOrEmpty(title))
            {
                temp      = c.LikeAll(ForumPostRepository.TITLE, title);
                condition = (condition == null ? temp : condition & temp);
            }

            //帖子内容
            if (!String.IsNullOrEmpty(content))
            {
                temp      = c.LikeAll(ForumPostRepository.CONTENT, content);
                condition = (condition == null ? temp : condition & temp);
            }

            //是否隐藏
            if (isHide.HasValue)
            {
                temp      = c.Equal(ForumPostRepository.ISHIDE, isHide.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            //发布日期范围
            if (startDate.HasValue || endDate.HasValue)
            {
                temp      = c.BetweenNullable <DateTime>(ForumPostRepository.POSTDATE, startDate, endDate);
                condition = (condition == null ? temp : condition & temp);
            }

            //发布IP
            if (!String.IsNullOrEmpty(postip))
            {
                temp      = c.LikeAll(ForumPostRepository.POSTIP, postip);
                condition = (condition == null ? temp : condition & temp);
            }

            return(command.Where(condition));
        }
 /// <summary>
 /// 初始化新的有Where语句的Sql语句抽象类
 /// </summary>
 /// <param name="database">数据库</param>
 /// <param name="rootSource">创建时的根来源</param>
 /// <param name="tableName">表格名称</param>
 protected AbstractSqlCommandWithWhere(AbstractDatabase database, AbstractSqlCommand rootSource, String tableName)
     : base(database, rootSource, tableName)
 {
     this._conditionBuilder = new SqlConditionBuilder(this);
 }
Пример #21
0
        /// <summary>
        /// 设置指定的查询语句并返回当前语句
        /// </summary>
        /// <param name="command">选择语句</param>
        /// <param name="names">用户名包含</param>
        /// <param name="nickname">昵称包含</param>
        /// <param name="email">邮箱包含</param>
        /// <param name="school">学校包含</param>
        /// <param name="lastIP">最后登录IP</param>
        /// <param name="islocked">是否锁定</param>
        /// <param name="regStartDate">注册日期开始</param>
        /// <param name="regEndDate">注册日期结束</param>
        /// <param name="loginStartDate">最后登录日期开始</param>
        /// <param name="loginEndDate">最后登录日期结束</param>
        /// <returns>当前语句</returns>
        internal static SelectCommand Where(this SelectCommand command, String names, String nickname, String email, String school, String lastIP, Boolean?islocked, DateTime?regStartDate, DateTime?regEndDate, DateTime?loginStartDate, DateTime?loginEndDate)
        {
            SqlConditionBuilder  c         = command.ConditionBuilder;
            AbstractSqlCondition condition = command.WhereCondition as AbstractSqlCondition;
            AbstractSqlCondition temp      = null;

            //用户名列表模糊
            if (!String.IsNullOrEmpty(names))
            {
                String[]             arrnames  = names.Split(',');
                AbstractSqlCondition innertemp = null;
                temp = null;

                for (Int32 i = 0; i < arrnames.Length; i++)
                {
                    if (!String.IsNullOrEmpty(arrnames[i]))
                    {
                        innertemp = c.LikeAll(UserRepository.USERNAME, arrnames[i]);
                        temp      = (temp == null ? innertemp : innertemp | temp);
                    }
                }

                condition = (condition == null ? temp : condition & temp);
            }

            //昵称模糊
            if (!String.IsNullOrEmpty(nickname))
            {
                temp      = c.LikeAll(UserRepository.NICKNAME, nickname);
                condition = (condition == null ? temp : condition & temp);
            }

            //邮箱模糊
            if (!String.IsNullOrEmpty(email))
            {
                temp      = c.LikeAll(UserRepository.EMAIL, email);
                condition = (condition == null ? temp : condition & temp);
            }

            //学校模糊
            if (!String.IsNullOrEmpty(school))
            {
                temp      = c.LikeAll(UserRepository.SCHOOL, school);
                condition = (condition == null ? temp : condition & temp);
            }

            //最后登录IP模糊
            if (!String.IsNullOrEmpty(lastIP))
            {
                temp      = c.LikeAll(UserRepository.LASTIP, lastIP);
                condition = (condition == null ? temp : condition & temp);
            }

            //是否锁定
            if (islocked.HasValue)
            {
                temp      = c.Equal(UserRepository.ISLOCKED, islocked.Value);
                condition = (condition == null ? temp : condition & temp);
            }

            //注册日期范围
            if (regStartDate.HasValue || regEndDate.HasValue)
            {
                temp      = c.BetweenNullable <DateTime>(UserRepository.CREATEDATE, regStartDate, regEndDate);
                condition = (condition == null ? temp : condition & temp);
            }

            //登陆日期范围
            if (loginStartDate.HasValue || loginEndDate.HasValue)
            {
                temp      = c.BetweenNullable <DateTime>(UserRepository.LASTDATE, loginStartDate, loginEndDate);
                condition = (condition == null ? temp : condition & temp);
            }

            return(command.Where(condition));
        }