public void TestCase_Base_2Single()
        {
            var listA = InitialRelateTableA(20);
            var listB = InitialRelateTableB(20);
            var listC = InitialRelateTableC(20);

            var listEx = (from x in listA
                          join y in listB on x.Id equals y.RelateAId into ps
                          from p in ps.DefaultIfEmpty()
                          join z in listC on x.Id equals z.RelateAId into pd
                          from q in pd.DefaultIfEmpty()
                          select new TeRelateA_BC
            {
                Id = x.Id,
                RelateBId = x.RelateBId,
                RelateCId = x.RelateCId,
                RelateDId = x.RelateDId,
                RelateEId = x.RelateEId,
                RelateFId = x.RelateFId,
                DecimalField = x.DecimalField,
                VarcharField = x.VarcharField,
                DateTimeField = x.DateTimeField,
                RelateB = p,
                RelateC = q
            }).ToList();
            var listAc = context.Query <TeRelateA_BC>().ToList();

            AssertExtend.StrictEqual(listEx, listAc);
        }
        public void TestCase_Base_Null()
        {
            var listA = InitialRelateTableA(20);
            var listB = InitialRelateTableB(10);

            var listEx = (from x in listA
                          join y in listB on x.Id equals y.RelateAId into ps
                          from p in ps.DefaultIfEmpty()
                          select new TeRelateA_B
            {
                Id = x.Id,
                RelateBId = x.RelateBId,
                RelateCId = x.RelateCId,
                RelateDId = x.RelateDId,
                RelateEId = x.RelateEId,
                RelateFId = x.RelateFId,
                DecimalField = x.DecimalField,
                VarcharField = x.VarcharField,
                DateTimeField = x.DateTimeField,
                RelateB = p
            }).ToList();
            var listAc = context.Query <TeRelateA_B>().ToList();

            AssertExtend.StrictEqual(listEx, listAc);
            for (int i = 0; i < 10; i++)
            {
                Assert.NotNull(listAc[i].RelateB);
            }

            for (int i = 10; i < 20; i++)
            {
                Assert.Null(listAc[i].RelateB);
            }
        }
 public void TestCase_Base_Single_Collection()
 {
     var listA          = InitialRelateTableA(20);
     var listB          = InitialRelateTableB(18);
     var listCollection = InitialRelateTableCollection(15);
     {
         var listEx = (from x in listA
                       join y in listB on x.Id equals y.RelateAId into ps
                       from p in ps.DefaultIfEmpty()
                       select new TeRelateA_B
         {
             Id = x.Id,
             RelateBId = x.RelateBId,
             RelateCId = x.RelateCId,
             RelateDId = x.RelateDId,
             RelateEId = x.RelateEId,
             RelateFId = x.RelateFId,
             DecimalField = x.DecimalField,
             VarcharField = x.VarcharField,
             DateTimeField = x.DateTimeField,
             RelateB = p
         }).ToList();
         var listAc = context.Query <TeRelateA_B_Collection>().ToList();
         AssertExtend.Equal(listA, listAc);
         for (int i = 0; i < listAc.Count; i++)
         {
             var item = listAc[i];
             AssertExtend.Equal(listEx[i], item);
             var collectionEx = listCollection.Where(x => x.RelateAId == item.Id).ToList();
             var collectionAc = item.RelateCollection.ToList();
             AssertExtend.StrictEqual(collectionEx, collectionAc);
         }
     }
 }
Esempio n. 4
0
        public void TestCase_ObjectField_Query_Null()
        {
            List <TeObjectField> list = CreateAndInsertObjectFieldTableList(45);

            List <TeObjectField> listEx = list.Where(x => x.ObjectFieldNull == null).ToList();
            List <TeObjectField> listAc = context.Query <TeObjectField>().Where(x => x.ObjectFieldNull == null).ToList();

            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 5
0
        public void TestCase_ObjectField_Query_Where()
        {
            List <TeObjectField> list   = CreateAndInsertObjectFieldTableList(45);
            TeObjectField        item   = list[2];
            List <TeObjectField> listEx = list.Where(x => x.ObjectField == item.ObjectField).ToList();
            List <TeObjectField> listAc = context.Query <TeObjectField>().Where(x => x.ObjectField == item.ObjectField).ToList();

            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 6
0
        public void TestCase_ObjectField_Query()
        {
            List <TeObjectField> list = CreateAndInsertObjectFieldTableList(45);

            List <TeObjectField> listEx = list;
            List <TeObjectField> listAc = context.Query <TeObjectField>().ToList();

            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 7
0
        public void TestCase_Query()
        {
            List <TeBaseFieldEntity> list = CreateAndInsertBaseFieldEntityTableList(45);
            List <TeBaseFieldEntity> listEx;
            List <TeBaseFieldEntity> listAc;

            listEx = list;
            listAc = context.Query <TeBaseFieldEntity>().ToList();
            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 8
0
        public async Task TestCase_Query_Async()
        {
            List <TeBaseFieldEntity> list = CreateAndInsertBaseFieldEntityTableList(45);
            List <TeBaseFieldEntity> listEx;
            List <TeBaseFieldEntity> listAc;

            listEx = list;
            listAc = await context.Query <TeBaseFieldEntity>().ToListAsync(CancellationToken.None);

            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 9
0
        public void TestCase_Single()
        {
            List <TeBaseFieldEntity> list = CreateAndInsertBaseFieldEntityTableList(45);
            TeBaseFieldEntity        ex;
            TeBaseFieldEntity        ac;

            ex = list[0];
            ac = context.Query <TeBaseFieldEntity>().First();
            AssertExtend.StrictEqual(ex, ac);

            ex = list[10];
            ac = context.Query <TeBaseFieldEntity>().ElementAt(10);
            AssertExtend.StrictEqual(ex, ac);
        }
Esempio n. 10
0
        public async Task TestCase_Single_Async()
        {
            List <TeBaseFieldEntity> list = CreateAndInsertBaseFieldEntityTableList(45);
            TeBaseFieldEntity        ex;
            TeBaseFieldEntity        ac;

            ex = list[0];
            ac = await context.Query <TeBaseFieldEntity>().FirstAsync(CancellationToken.None);

            AssertExtend.StrictEqual(ex, ac);

            ex = list[10];
            ac = await context.Query <TeBaseFieldEntity>().ElementAtAsync(10, CancellationToken.None);

            AssertExtend.StrictEqual(ex, ac);
        }
Esempio n. 11
0
        public void TestCase_ObjectField_Join()
        {
            List <TeObjectField> list = CreateAndInsertObjectFieldTableList(45);

            var temlist = list.Where(x => x.Id <= 5).ToList();

            list.AddRange(temlist);
            var sublist = temlist.Select(x => new {
                x.Id,
                x.ObjectField,
                x.ObjectFieldNull
            }).ToList();

            context.BatchInsert(temlist);
            var listEx = list.GroupBy(x => x.ObjectField).Select(g => new {
                ObjectField = g.Key,
                Count       = g.Count()
            }).ToList().OrderBy(x => x.ObjectField.DataInt).ToList()
                         .Join(sublist, x => x.ObjectField, y => y.ObjectField, (x, y) => new {
                x.ObjectField,
                x.Count,
                y.Id,
                y.ObjectFieldNull
            }).ToList();
            var ft = context.Query <TeObjectField>().Where(x => x.Id <= 5).Select(x => new {
                x.Id,
                x.ObjectField,
                x.ObjectFieldNull
            });

            var listAc = context.Query <TeObjectField>().Aggregate(x => new {
                ObjectField = x.ObjectField,
                Count       = Function.Count()
            })
                         .Join(ft, (x, y) => x.ObjectField == y.ObjectField)
                         .Select((x, y) => new {
                x.ObjectField,
                x.Count,
                y.Id,
                y.ObjectFieldNull
            })
                         .ToList().OrderBy(x => x.ObjectField.DataInt).ToList();

            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 12
0
        public void TestCase_ObjectField_Aggregate()
        {
            List <TeObjectField> list = CreateAndInsertObjectFieldTableList(45);

            var temlist = list.Take(5).ToList();

            list.AddRange(temlist);
            context.BatchInsert(temlist);
            var listEx = list.GroupBy(x => x.ObjectField).Select(g => new {
                ObjectField = g.Key,
                Count       = g.Count()
            }).ToList().OrderBy(x => x.ObjectField.DataInt).ToList();
            var listAc = context.Query <TeObjectField>().Aggregate(x => new {
                ObjectField = x.ObjectField,
                Count       = Function.Count()
            }).ToList().OrderBy(x => x.ObjectField.DataInt).ToList();

            AssertExtend.StrictEqual(listEx, listAc);
        }
Esempio n. 13
0
        public void TestCase_CUD_Single_S2()
        {
            context.TruncateTable <TeBaseFieldEntity>();
            var item  = CreateAndInsertBaseFieldEntityTableList(1)[0];
            var item1 = context.SelectById <MyBase2>(item.Id);

            item1.Id = 0;
            item1.Reset();
            context.TruncateTable <MyBase2>();
            var retInsert = item1.Save();

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retInsert);
            var item2 = context.SelectById <MyBase2>(item1.Id);

            AssertExtend.StrictEqual(item1, item2);
            item1.DateTimeField      = GetNow();
            item1.DateTimeFieldNull  = null;
            item1.Int32Field         = 2;
            item1.Int32FieldNull     = null;
            item1.DoubleField        = 2.0d;
            item1.DoubleFieldNull    = null;
            item1.VarcharField       = "abc";
            item1.VarcharFieldNull   = null;
            item1.EnumInt32Field     = EnumInt32Type.Zero;
            item1.EnumInt32FieldNull = null;
            item1.EnumInt64Field     = EnumInt64Type.Zero;
            item1.EnumInt64FieldNull = null;
            var retUpdate = item1.Save();

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retUpdate);
            var item3 = context.SelectById <MyBase2>(item1.Id);

            AssertExtend.StrictEqual(item1, item3);
            var retDelete = item1.Erase();

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retDelete);
            var item4 = context.SelectById <MyBase2>(item1.Id);

            Assert.Null(item4);
        }
Esempio n. 14
0
        public void TestCase_CUD_Single_NoIdentity_Key()
        {
            context.TruncateTable <TeBaseFieldNoIdentityEntity>();
            var item1 = context.CreateNew <TeBaseFieldNoIdentityEntity>();

            item1.Id             = 0;
            item1.Int32Field     = 1;
            item1.DoubleField    = 0.1;
            item1.VarcharField   = "level1";
            item1.DateTimeField  = GetNow();
            item1.EnumInt32Field = EnumInt32Type.Positive1;
            var retInsert = item1.Save();

            Assert.Equal(0, item1.Id);
            Assert.Equal(1, retInsert);
            var item2 = context.SelectByKey <TeBaseFieldNoIdentityEntity>(item1.Id);

            AssertExtend.StrictEqual(item1, item2);
            item1.AllowUpdatePrimaryKey();
            item1.Id             = 1;
            item1.DateTimeField  = GetNow();
            item1.Int32Field     = 2;
            item1.VarcharField   = "level2";
            item1.DoubleField    = 0.2;
            item1.EnumInt32Field = EnumInt32Type.Negative1;
            var retUpdate = item1.Save();

            Assert.Equal(0, item2.Id);
            Assert.Equal(1, retUpdate);
            var item3 = context.SelectByKey <TeBaseFieldNoIdentityEntity>(item1.Id);

            AssertExtend.StrictEqual(item1, item3);
            var itemn = context.SelectByKey <TeBaseFieldNoIdentityEntity>(0);

            Assert.Null(itemn);
            var retDelete = item1.Erase();

            Assert.Equal(1, item3.Id);
            Assert.Equal(1, retDelete);
            var item4 = context.SelectByKey <TeBaseFieldNoIdentityEntity>(item1.Id);

            Assert.Null(item4);
        }
Esempio n. 15
0
        public void TestCase_Config_Relate_Extend()
        {
            var listA = CreateAndInsertMainTableListExtend(10);
            var listB = CreateAndInsertSubTableList(5);

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.MainId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateMainExtendConfig {
                    Id = x.Id,
                    DecimalField = x.DecimalField,
                    DateTimeField = x.DateTimeField,
                    VarcharField = x.VarcharField,
                    SubConfig = p
                }).OrderByDescending(x => x.Id).ToList();

                var listAc = context.Query <TeRelateMainExtendConfig>().OrderByDescending(x => x.Id).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }
        }
 public void TestCase_Base_Collection()
 {
     var listA          = InitialRelateTableA(20);
     var listCollection = InitialRelateTableCollection(15);
     {
         var listAc = context.Query <TeRelateA_LCollection>().ToList();
         AssertExtend.Equal(listA, listAc);
         for (int i = 0; i < listAc.Count; i++)
         {
             var item         = listAc[i];
             var collectionEx = listCollection.Where(x => x.RelateAId == item.Id).ToList();
             var collectionAc = item.RelateCollection.ToList();
             AssertExtend.StrictEqual(collectionEx, collectionAc);
         }
     }
     {
         var listAc = context.Query <TeRelateA_ICollection>().ToList();
         AssertExtend.Equal(listA, listAc);
         for (int i = 0; i < listAc.Count; i++)
         {
             var item         = listAc[i];
             var collectionEx = listCollection.Where(x => x.RelateAId == item.Id).ToList();
             var collectionAc = item.RelateCollection.ToList();
             AssertExtend.StrictEqual(collectionEx, collectionAc);
         }
     }
     {
         var listAc = context.Query <TeRelateA_2Collection>().ToList();
         AssertExtend.Equal(listA, listAc);
         for (int i = 0; i < listAc.Count; i++)
         {
             var item          = listAc[i];
             var collectionEx  = listCollection.Where(x => x.RelateAId == item.Id).ToList();
             var collectionLAc = item.RelateLCollection.ToList();
             AssertExtend.StrictEqual(collectionEx, collectionLAc);
             var collectionIAc = item.RelateICollection.ToList();
             AssertExtend.StrictEqual(collectionEx, collectionIAc);
         }
     }
 }
Esempio n. 17
0
        public async Task TestCase_CUD_Single_NoIdentity_Async()
        {
            await context.TruncateTableAsync <TeBaseFieldNoIdentityEntity>(CancellationToken.None);

            var item1 = context.CreateNew <TeBaseFieldNoIdentityEntity>();

            item1.Id             = 0;
            item1.Int32Field     = 1;
            item1.DoubleField    = 0.1;
            item1.VarcharField   = "level1";
            item1.DateTimeField  = GetNow();
            item1.EnumInt32Field = EnumInt32Type.Positive1;
            var retInsert = await item1.SaveAsync(CancellationToken.None);

            Assert.Equal(0, item1.Id);
            Assert.Equal(1, retInsert);
            var item2 = await context.SelectByKeyAsync <TeBaseFieldNoIdentityEntity>(item1.Id, CancellationToken.None);

            AssertExtend.StrictEqual(item1, item2);
            item1.DateTimeField  = GetNow();
            item1.Int32Field     = 2;
            item1.VarcharField   = "level2";
            item1.DoubleField    = 0.2;
            item1.EnumInt32Field = EnumInt32Type.Negative1;
            var retUpdate = await item1.SaveAsync(CancellationToken.None);

            Assert.Equal(0, item2.Id);
            Assert.Equal(1, retUpdate);
            var item3 = await context.SelectByKeyAsync <TeBaseFieldNoIdentityEntity>(item1.Id, CancellationToken.None);

            AssertExtend.StrictEqual(item1, item3);
            var retDelete = await item1.EraseAsync(CancellationToken.None);

            Assert.Equal(0, item3.Id);
            Assert.Equal(1, retDelete);
            var item4 = await context.SelectByKeyAsync <TeBaseFieldNoIdentityEntity>(item1.Id, CancellationToken.None);

            Assert.Null(item4);
        }
Esempio n. 18
0
        public async Task TestCase_CUD_Single_Async()
        {
            await context.TruncateTableAsync <TeBaseFieldEntity>(CancellationToken.None);

            var item1     = CreateBaseFieldEntityTableList(1)[0];
            var retInsert = await item1.SaveAsync(CancellationToken.None);

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retInsert);
            var item2 = await context.SelectByIdAsync <TeBaseFieldEntity>(item1.Id, CancellationToken.None);

            AssertExtend.StrictEqual(item1, item2);
            item1.DateTimeField      = GetNow();
            item1.DateTimeFieldNull  = null;
            item1.Int32Field         = 2;
            item1.Int32FieldNull     = null;
            item1.DoubleField        = 2.0d;
            item1.DoubleFieldNull    = null;
            item1.VarcharField       = "abc";
            item1.VarcharFieldNull   = null;
            item1.EnumInt32Field     = EnumInt32Type.Zero;
            item1.EnumInt32FieldNull = null;
            item1.EnumInt64Field     = EnumInt64Type.Zero;
            item1.EnumInt64FieldNull = null;
            var retUpdate = await item1.SaveAsync(CancellationToken.None);

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retUpdate);
            var item3 = await context.SelectByIdAsync <TeBaseFieldEntity>(item1.Id, CancellationToken.None);

            AssertExtend.StrictEqual(item1, item3);
            var retDelete = await item1.EraseAsync(CancellationToken.None);

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retDelete);
            var item4 = await context.SelectByIdAsync <TeBaseFieldEntity>(item1.Id, CancellationToken.None);

            Assert.Null(item4);
        }
Esempio n. 19
0
        public void TestCase_InsertOrUpdate_Single()
        {
            context.TruncateTable <TeBaseFieldEntity>();
            var item1     = CreateBaseFieldEntityTableList(1)[0];
            var retInsert = context.InsertOrUpdate(item1);

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retInsert);
            var item2 = context.SelectById <TeBaseFieldEntity>(item1.Id);

            AssertExtend.StrictEqual(item1, item2);
            item1.DateTimeField      = GetNow();
            item1.DateTimeFieldNull  = null;
            item1.Int32Field         = 2;
            item1.Int32FieldNull     = null;
            item1.DoubleField        = 2.0d;
            item1.DoubleFieldNull    = null;
            item1.VarcharField       = "abc";
            item1.VarcharFieldNull   = null;
            item1.EnumInt32Field     = EnumInt32Type.Zero;
            item1.EnumInt32FieldNull = null;
            item1.EnumInt64Field     = EnumInt64Type.Zero;
            item1.EnumInt64FieldNull = null;
            var retUpdate = context.InsertOrUpdate(item1);

            Assert.Equal(1, item1.Id);
            Assert.Equal(1, retUpdate);
            var item3 = context.SelectById <TeBaseFieldEntity>(item1.Id);

            AssertExtend.StrictEqual(item1, item3);
            var retDelete = context.Delete(item1);

            Assert.Equal(1, retDelete);
            var item4 = context.SelectById <TeBaseFieldEntity>(item1.Id);

            Assert.Null(item4);
        }
        public void TestCase_Base_PageSkipTake()
        {
            const int tol = 21;
            const int cnt = 8;

            var listA = InitialRelateTableA(20);
            var listB = InitialRelateTableB(20);

            int times = tol / cnt;

            times++;

            for (int i = 0; i < times; i++)
            {
                {
                    var listEx = (from x in listA
                                  join y in listB on x.Id equals y.RelateAId into ps
                                  from p in ps.DefaultIfEmpty()
                                  select new TeRelateA_B
                    {
                        Id = x.Id,
                        RelateBId = x.RelateBId,
                        RelateCId = x.RelateCId,
                        RelateDId = x.RelateDId,
                        RelateEId = x.RelateEId,
                        RelateFId = x.RelateFId,
                        DecimalField = x.DecimalField,
                        VarcharField = x.VarcharField,
                        DateTimeField = x.DateTimeField,
                        RelateB = p
                    }).Skip(cnt * i).ToList();
                    var listAc = context.Query <TeRelateA_B>().Skip(cnt * i).ToList();
                    AssertExtend.StrictEqual(listEx, listAc);
                }
                {
                    var listEx = (from x in listA
                                  join y in listB on x.Id equals y.RelateAId into ps
                                  from p in ps.DefaultIfEmpty()
                                  select new TeRelateA_B
                    {
                        Id = x.Id,
                        RelateBId = x.RelateBId,
                        RelateCId = x.RelateCId,
                        RelateDId = x.RelateDId,
                        RelateEId = x.RelateEId,
                        RelateFId = x.RelateFId,
                        DecimalField = x.DecimalField,
                        VarcharField = x.VarcharField,
                        DateTimeField = x.DateTimeField,
                        RelateB = p
                    }).Take(cnt * i).ToList();
                    var listAc = context.Query <TeRelateA_B>().Take(cnt * i).ToList();
                    AssertExtend.StrictEqual(listEx, listAc);
                }
                {
                    var listEx = (from x in listA
                                  join y in listB on x.Id equals y.RelateAId into ps
                                  from p in ps.DefaultIfEmpty()
                                  select new TeRelateA_B
                    {
                        Id = x.Id,
                        RelateBId = x.RelateBId,
                        RelateCId = x.RelateCId,
                        RelateDId = x.RelateDId,
                        RelateEId = x.RelateEId,
                        RelateFId = x.RelateFId,
                        DecimalField = x.DecimalField,
                        VarcharField = x.VarcharField,
                        DateTimeField = x.DateTimeField,
                        RelateB = p
                    }).Skip(cnt * i).Take(cnt).ToList();
                    var listAc = context.Query <TeRelateA_B>().Skip(cnt * i).Take(cnt).ToList();
                    AssertExtend.StrictEqual(listEx, listAc);
                }
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).Where(x => x.Id > cnt).Take(cnt).ToList();
                var listAc = context.Query <TeRelateA_B>().Where(x => x.Id > cnt).Take(cnt).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).OrderByDescending(x => x.Id).Take(cnt).ToList();
                var listAc = context.Query <TeRelateA_B>().OrderByDescending(x => x.Id).Take(cnt).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).Where(x => x.Id > cnt).Skip(cnt).ToList();
                var listAc = context.Query <TeRelateA_B>().Where(x => x.Id > cnt).Where(x => x.Id > cnt).Skip(cnt)
                             .ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).OrderByDescending(x => x.Id).Skip(cnt).ToList();
                var listAc = context.Query <TeRelateA_B>().OrderByDescending(x => x.Id).Skip(cnt).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).Where(x => x.Id > cnt).Skip(cnt).Take(cnt).ToList();
                var listAc = context.Query <TeRelateA_B>().Where(x => x.Id > cnt).Where(x => x.Id > cnt).Skip(cnt)
                             .Take(cnt).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).OrderByDescending(x => x.Id).Skip(cnt).Take(cnt).ToList();
                var listAc = context.Query <TeRelateA_B>().OrderByDescending(x => x.Id).Skip(cnt).Take(cnt).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }
        }
        public void TestCase_Base_Select()
        {
            var listA = InitialRelateTableA(20);
            var listB = InitialRelateTableB(20);
            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateBV = p.VarcharField
                }).ToList();

                var listAc = context.Query <TeRelateA_B>()
                             .Select(x => new
                {
                    Id            = x.Id,
                    RelateBId     = x.RelateBId,
                    RelateCId     = x.RelateCId,
                    RelateDId     = x.RelateDId,
                    RelateEId     = x.RelateEId,
                    RelateFId     = x.RelateFId,
                    DecimalField  = x.DecimalField,
                    VarcharField  = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateBV      = x.RelateB.VarcharField
                })
                             .ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateBV = p.VarcharField,
                    RelateBD = p.DateTimeField
                }).ToList();

                var listAc = context.Query <TeRelateA_B>()
                             .Select(x => new
                {
                    Id            = x.Id,
                    RelateBId     = x.RelateBId,
                    RelateCId     = x.RelateCId,
                    RelateDId     = x.RelateDId,
                    RelateEId     = x.RelateEId,
                    RelateFId     = x.RelateFId,
                    DecimalField  = x.DecimalField,
                    VarcharField  = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateBV      = x.RelateB.VarcharField,
                    RelateBD      = x.RelateB.DateTimeField
                })
                             .ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateBV = p.VarcharField,
                    RelateBD = p.DateTimeField,
                    RelateBM = p.DecimalField
                }).ToList();

                var listAc = context.Query <TeRelateA_B>()
                             .Select(x => new
                {
                    Id            = x.Id,
                    RelateBId     = x.RelateBId,
                    RelateCId     = x.RelateCId,
                    RelateDId     = x.RelateDId,
                    RelateEId     = x.RelateEId,
                    RelateFId     = x.RelateFId,
                    DecimalField  = x.DecimalField,
                    VarcharField  = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateBV      = x.RelateB.VarcharField,
                    RelateBD      = x.RelateB.DateTimeField,
                    RelateBM      = x.RelateB.DecimalField,
                })
                             .ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }
        }
        public void TestCase_Base_Order()
        {
            var listA = InitialRelateTableA(20);
            var listB = InitialRelateTableB(20);
            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).OrderByDescending(x => x.Id).ToList();

                var listAc = context.Query <TeRelateA_B>().OrderByDescending(x => x.Id).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).OrderByDescending(x => x.RelateB.Id).ToList();

                var listAc = context.Query <TeRelateA_B>().OrderByDescending(x => x.RelateB.Id).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).OrderByDescending(x => x.Id).ToList();

                var listAc = context.Query <TeRelateA_B>().OrderBy(x => x.RelateB.DecimalField)
                             .OrderByDescending(x => x.Id).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }
        }
        public void TestCase_Base_Where()
        {
            var listA = InitialRelateTableA(20);
            var listB = InitialRelateTableB(18);
            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).Where(x => x.Id <= 1010).ToList();

                var listAc = context.Query <TeRelateA_B>().Where(x => x.Id <= 1010).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).Where(x => x.RelateB != null && x.RelateB.Id <= 2010).ToList();

                var listAc = context.Query <TeRelateA_B>().Where(x => x.RelateB.Id <= 2010).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
            }

            {
                var listEx = (from x in listA
                              join y in listB on x.Id equals y.RelateAId into ps
                              from p in ps.DefaultIfEmpty()
                              select new TeRelateA_B
                {
                    Id = x.Id,
                    RelateBId = x.RelateBId,
                    RelateCId = x.RelateCId,
                    RelateDId = x.RelateDId,
                    RelateEId = x.RelateEId,
                    RelateFId = x.RelateFId,
                    DecimalField = x.DecimalField,
                    VarcharField = x.VarcharField,
                    DateTimeField = x.DateTimeField,
                    RelateB = p
                }).Where(x => x.Id > 1005 && x.RelateB != null && x.RelateB.Id <= 2010).ToList();

                var listAc = context.Query <TeRelateA_B>().Where(x => x.Id > 1005 && x.RelateB.Id <= 2010).ToList();
                AssertExtend.StrictEqual(listEx, listAc);
                var listAc1 = context.Query <TeRelateA_B>().Where(x => x.Id > 1005)
                              .WhereWithAnd(x => x.RelateB.Id <= 2010).ToList();
                AssertExtend.StrictEqual(listEx, listAc1);
            }
        }