public void Test_RightJoin_6()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select [a] ");
            result.AppendLine("From [b] ");
            result.Append("Right Join c");

            //执行
            _builder.Select("a")
            .From("b")
            .AppendRightJoin("d", false)
            .AppendRightJoin("c", true);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
Пример #2
0
        public void Test_AppendGroupBy_2()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select [a].[Email] ");
            result.AppendLine("From [Sample] As [a] ");
            result.Append("Group By b");

            //执行
            _builder.Select <Sample>(t => t.Email)
            .From <Sample>("a")
            .AppendGroupBy("c", false)
            .AppendGroupBy("b", true);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
Пример #3
0
        public void Test_Between_9()
        {
            //结果
            var result = new Str();

            result.Append("Where [a].[B]>=@_p_0 And [a].[B]<=@_p_1");

            //执行
            var min = DateTime.Parse("2000-1-1 10:10:10");
            var max = DateTime.Parse("2000-1-2 10:10:10");

            _clause.Between("a.B", min, max, true, null);

            //验证
            Assert.Equal(min, _parameterManager.GetParams()["@_p_0"]);
            Assert.Equal(max, _parameterManager.GetParams()["@_p_1"]);
            Assert.Equal(result.ToString(), GetSql());
        }
        public void Test_LeftJoin_7()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select [a].[Email],[a].[BoolValue],[b].[Description],[b].[IntValue] ");
            result.AppendLine("From [Sample] As [a] ");
            result.Append("Left Join [Sample2] As [b] On [a].[Email]=[b].[StringValue] And [a].[IntValue]<>[b].[IntValue]");

            //执行
            _builder.Select <Sample>(t => new object[] { t.Email, t.BoolValue })
            .Select <Sample2>(t => new object[] { t.Description, t.IntValue })
            .From <Sample>("a")
            .LeftJoin <Sample2>("b").On <Sample, Sample2>((l, r) => l.Email == r.StringValue && l.IntValue != r.IntValue);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
Пример #5
0
        public void Test_With()
        {
            //结果
            var result = new Str();

            result.AppendLine("With Recursive `Test` ");
            result.AppendLine("As (Select `a`,`b` ");
            result.AppendLine("From `Test2`)");
            result.AppendLine("Select `a`,`b` ");
            result.Append("From `Test`");

            //执行
            var builder2 = _builder.New().Select("a,b").From("Test2");

            _builder.Select("a,b").From("Test").With("Test", builder2);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
        public void Test_IgnoreFilter_2()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select [s].[StringValue] ");
            result.AppendLine("From [Sample5] As [s] ");
            result.Append("Join [Sample6] As [s2] On [s].[IntValue]=[s2].[IntValue]");

            //执行
            _builder.Select <Sample5>(t => t.StringValue)
            .From <Sample5>("s")
            .Join <Sample6>("s2").On <Sample5, Sample6>((l, r) => l.IntValue == r.IntValue)
            .IgnoreFilter <IsDeletedFilter>();

            //验证
            Output.WriteLine(_builder.ToSql());
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
        public void Test_On_4()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select [a],[b] ");
            result.AppendLine("From [Sample] As [s] ");
            result.Append("Left Join [Sample2] As [s2] On [s].[IntValue]=[s2].[IntValue] And [s].[StringValue]=@_p_0");

            //执行
            _builder.Select("a,b")
            .From <Sample>("s")
            .LeftJoin <Sample2>("s2").On <Sample, Sample2>((l, r) => l.IntValue == r.IntValue && l.StringValue == "a");

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
            Output.WriteLine(_builder.ToSql());
            Assert.Equal("a", _builder.GetParams()["@_p_0"]);
        }
Пример #8
0
        public void TestWhere()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select \"a\".\"Email\" ");
            result.AppendLine("From \"Sample\" \"a\" ");
            result.Append("Where \"a\".\"Email\"<>:p_0");

            //执行
            _builder.Select <Sample>(t => new object[] { t.Email })
            .From <Sample>("a")
            .Where <Sample>(t => t.Email, "abc", Operator.NotEqual);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
            Assert.Single(_builder.GetParams());
            Assert.Equal("abc", _builder.GetParams()["p_0"]);
        }
Пример #9
0
        public void Test_On_15()
        {
            //结果
            var result = new Str();

            result.Append("Join [Sample] As [t] ");
            result.AppendLine("On [a].[id]=@_p_0 ");
            result.Append("Join [Sample2] As [t2] ");
            result.Append("On [t2].[IntValue]>[t].[ShortValue]");

            //操作
            _clause.Join <Sample>("t");
            _clause.On("a.id", "b.id");
            _clause.Join <Sample2>("t2");
            _clause.On <Sample, Sample2>((l, r) => r.IntValue > l.ShortValue);

            //验证
            Assert.Equal(result.ToString(), GetSql());
        }
Пример #10
0
        public void Test_With_1()
        {
            //结果
            var result = new Str();

            result.AppendLine("With [Test] ");
            result.AppendLine("As (Select [a],[b] ");
            result.AppendLine("From [Test2])");
            result.AppendLine("Select [a],[b] ");
            result.Append("From [Test]");

            //执行
            var builder2 = _builder.New().Select("a,b").From("Test2");

            _builder.Select("a,b").From("Test").With("Test", builder2);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
Пример #11
0
        public void Test_On_7()
        {
            //结果
            var result = new Str();

            result.Append("Join [Sample] As [t] ");
            result.AppendLine("On [a].[id]=@_p_0 ");
            result.Append("Join [Sample2] As [t2] ");
            result.Append("On [t].[BoolValue]<[t2].[IntValue]");

            //操作
            _clause.Join <Sample>("t");
            _clause.On("a.id", "b");
            _clause.Join <Sample2>("t2");
            _clause.On <Sample, Sample2>(t => t.BoolValue, t => t.IntValue, Operator.Less);

            //验证
            Assert.Equal(result.ToString(), GetSql());
        }
Пример #12
0
        public void Test_On_4()
        {
            //结果
            var result = new Str();

            result.Append("Join [t] ");
            result.AppendLine("On [a].[id]=@_p_0 And [c].[Aid]=@_p_1 ");
            result.Append("Join [n] ");
            result.Append("On [t].[id]=@_p_2 And [t].[Aid]=@_p_3");

            //操作
            _clause.Join("t");
            _clause.On("a.id", "b");
            _clause.On("c.Aid", "d");
            _clause.Join("n");
            _clause.On("t.id", "e");
            _clause.On("t.Aid", "f");

            //验证
            Assert.Equal(result.ToString(), GetSql());
        }
Пример #13
0
        public void Test_OrIfNotEmpty_4()
        {
            //结果
            var result = new Str();

            result.Append("Where (([Email]=@_p_0 Or ");
            result.Append("[Email] In (@_p_1,@_p_2)) Or [Url]=@_p_3) ");
            result.Append("And [Url]=@_p_4");

            //执行
            var list = new List <string> {
                "a", "b"
            };

            _clause.Where <Sample>(t => t.Email == "b");
            _clause.OrIfNotEmpty <Sample>(t => list.Contains(t.Email), t => t.Url == "a");
            _clause.Where <Sample>(t => t.Url == "c");

            //验证
            Assert.Equal(result.ToString(), GetSql());
        }
Пример #14
0
        public void Test_AppendOn_2()
        {
            //结果
            var result = new Str();

            result.Append("Join [t] ");
            result.AppendLine("On [a].[id]=@_p_0 And a.id=b.id ");
            result.Append("Join [v] ");
            result.Append("On [v].[id]=@_p_1 And v.id=b.id");

            //操作
            _clause.Join("t");
            _clause.On("a.id", "b");
            _clause.AppendOn("a.id=b.id");
            _clause.Join("v");
            _clause.On("v.id", "c");
            _clause.AppendOn("v.id=b.id");

            //验证
            Assert.Equal(result.ToString(), GetSql());
        }
Пример #15
0
        public void Test_On_13()
        {
            //结果
            var result = new Str();

            result.Append("Join [Sample] As [t] ");
            result.AppendLine("On [a].[id]=@_p_0 ");
            result.Append("Join [Sample2] As [t2] ");
            result.Append("On [t].[ShortValue]>[t2].[IntValue] And [t].[IntValue]=@_p_1");

            //操作
            _clause.Join <Sample>("t");
            _clause.On("a.id", "b");
            _clause.Join <Sample2>("t2");
            _clause.On <Sample, Sample2>((l, r) => l.ShortValue > r.IntValue && l.IntValue == 1);

            //验证
            Assert.Equal(result.ToString(), GetSql());
            Assert.Equal("b", _parameterManager.GetParams()["@_p_0"]);
            Assert.Equal(1, _parameterManager.GetParams()["@_p_1"]);
        }
        public void Test_Join_4()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select * ");
            result.AppendLine("From [Test] ");
            result.AppendLine("Join (Select * ");
            result.AppendLine("From [Test2] ");
            result.AppendLine("Where [Name]=@_p_0) As [t] ");
            result.Append("Where [Age]=@_p_1");

            //执行
            _builder.From("Test").Join(builder => builder.From("Test2").Where("Name", "a"), "t").Where("Age", 1);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
            Assert.Equal(2, _builder.GetParams().Count);
            Assert.Equal("a", _builder.GetParams()["@_p_0"]);
            Assert.Equal(1, _builder.GetParams()["@_p_1"]);
        }
Пример #17
0
        public void Test_Page_2()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select * ");
            result.AppendLine("From [Test] ");
            result.AppendLine("Order By [a] ");
            result.Append("Offset @_p_0 Rows Fetch Next @_p_1 Rows Only");

            //执行
            var pager = new QueryParameter {
                Order = "a"
            };

            _builder.From("Test").Page(pager);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
            Assert.Equal(0, _builder.GetParams()["@_p_0"]);
            Assert.Equal(20, _builder.GetParams()["@_p_1"]);
        }
Пример #18
0
        public void Test_IgnoreFilter_3()
        {
            //结果
            var result = new Str();

            result.AppendLine("Select [s5].[StringValue] ");
            result.AppendLine("From [Sample5] As [s5] ");
            result.AppendLine("Join [Sample6] As [s6] On [s5].[IntValue]=[s6].[IntValue] ");
            result.AppendLine("Left Join [Sample7] As [s7] On [s6].[IntValue]=[s7].[IntValue] ");
            result.Append("Right Join [Sample8] As [s8] On [s7].[IntValue]=[s8].[IntValue]");

            //执行
            _builder.Select <Sample5>(t => t.StringValue)
            .From <Sample5>("s5")
            .Join <Sample6>("s6").On <Sample5, Sample6>((l, r) => l.IntValue == r.IntValue)
            .LeftJoin <Sample7>("s7").On <Sample6, Sample7>((l, r) => l.IntValue == r.IntValue)
            .RightJoin <Sample8>("s8").On <Sample7, Sample8>((l, r) => l.IntValue == r.IntValue)
            .IgnoreFilter <IsDeletedFilter>();

            //验证
            Output.WriteLine(_builder.ToSql());
            Assert.Equal(result.ToString(), _builder.ToSql());
        }
        public void Test_Select_4()
        {
            //结果
            var result = new Str();

            result.Append("Select *,");
            result.AppendLine("(Select Count(*) ");
            result.AppendLine("From [Test2] ");
            result.AppendLine("Where [Name]=@_p_0) As [TestCount] ");
            result.AppendLine("From [Test] ");
            result.Append("Where [Age]=@_p_1");

            //执行
            var builder2 = _builder.New().Count().From("Test2").Where("Name", "a");

            _builder.Select("*").Select(builder2, "TestCount").From("Test").Where("Age", 1);

            //验证
            Assert.Equal(result.ToString(), _builder.ToSql());
            Assert.Equal(2, _builder.GetParams().Count);
            Assert.Equal("a", _builder.GetParams()["@_p_0"]);
            Assert.Equal(1, _builder.GetParams()["@_p_1"]);
        }
Пример #20
0
        public void Test_On_12()
        {
            //结果
            var result = new Str();

            result.Append("Join [Sample] As [t] ");
            result.AppendLine("On [t].[id]=@_p_0 ");
            result.Append("Join [Sample2] As [t2] ");
            result.Append("On [t2].[id]=@_p_1 ");
            result.Append("And ([t].[ShortValue]>[t2].[IntValue] Or [t].[DisplayValue]=[t2].[StringValue]) ");
            result.Append("And a.Id=b.Id");

            //操作
            _clause.Join <Sample>("t");
            _clause.On("t.id", "b");
            _clause.Join <Sample2>("t2");
            _clause.On("t2.id", "b");
            _clause.On <Sample, Sample2>((l, r) => l.ShortValue > r.IntValue || l.DisplayValue == r.StringValue);
            _clause.AppendOn("a.Id=b.Id");

            //验证
            Assert.Equal(result.ToString(), GetSql());
        }
Пример #21
0
 /// <summary>
 /// 初始化拼音简码
 /// </summary>
 public void InitPinYin() => PinYin = Str.PinYin(Name);
Пример #22
0
 public void Test_FullPinYin()
 {
     Output.WriteLine(Str.FullPinYin("隔壁老王"));
 }