Ejemplo n.º 1
0
        public void TestMethod1()
        {
            Helper.CleanDatabase();

            var single1 = new SingleMany {ColumnInt = 1};
            var single2 = new SingleMany {ColumnInt = 8};
            var single3 = new SingleMany {ColumnInt = 64};

            var many1 = new List<SingleMany> {new SingleMany {ColumnInt = 512}, new SingleMany {ColumnInt = 1024}, new SingleMany {ColumnInt = 2048}}; // 3584
            var many2 = new List<SingleMany> {new SingleMany {ColumnInt = 4096}, new SingleMany {ColumnInt = 8192}, new SingleMany {ColumnInt = 16384}}; // 28672
            var many3 = new List<SingleMany> {new SingleMany {ColumnInt = 32768}, new SingleMany {ColumnInt = 65536}, new SingleMany {ColumnInt = 131072}}; // 229376

            Helper.LinkSingleMany(single1, single2, single3, many1, many2, many3);
            Helper.InsertFromMetas(new List<string>() {"BulkInsertAll"}, single1, single2, single3, many1, many2, many3);
            Helper.UpdateFromMetas(new List<string>() {"BulkInsertAll"}, single1, single2, single3, many1, many2, many3);

            using (var cn = Helper.GetConnection())
            {
                //cn.BulkInsert(many1).ThenBulkInsert(x => x.ColumnInt);

                cn.Open();

                // PreTest
            }

            using (var cn = Helper.GetConnection())
            {
                cn.Open();

                // Action
            }

            // GET count
            int columnInt = 0;
            int columnUpdateInt = 0;
            int columnInt_Key = 0;
            int columnUpdateInt_Key = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT SUM(ColumnInt) FROM SingleMany";
                    columnInt = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT SUM(ColumnUpdateInt) FROM SingleMany";
                    columnUpdateInt = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT SUM(ColumnInt) FROM SingleMany_Key";
                    columnInt_Key = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key";
                    columnUpdateInt_Key = Convert.ToInt32(command.ExecuteScalar());
                }
            }
        }
Ejemplo n.º 2
0
        public void Z_Test_0030()
        {
            Helper.CleanDatabase();

            var single1 = new SingleMany {ColumnInt = 1};
            var single2 = new SingleMany {ColumnInt = 8};
            var single3 = new SingleMany {ColumnInt = 64};

            var many1 = new List<SingleMany> {new SingleMany {ColumnInt = 512}, new SingleMany {ColumnInt = 1024}, new SingleMany {ColumnInt = 2048}};
            var many2 = new List<SingleMany> {new SingleMany {ColumnInt = 4096}, new SingleMany {ColumnInt = 8192}, new SingleMany {ColumnInt = 16384}};
            var many3 = new List<SingleMany> {new SingleMany {ColumnInt = 32768}, new SingleMany {ColumnInt = 65536}, new SingleMany {ColumnInt = 131072}};

            Helper.LinkSingleMany(single1, single2, single3, many1, many2, many3);
            Helper.InsertFromMetas("".Split(';').ToList(), single1, single2, single3, many1, many2, many3);
            Helper.UpdateFromMetas("".Split(';').ToList(), single1, single2, single3, many1, many2, many3);

            // GET count before
            int columnInt_before = 0;
            int columnUpdateInt_before = 0;
            int columnInt_Key_before = 0;
            int columnUpdateInt_Key_before = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key_before = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            using (var cn = Helper.GetConnection())
            {
                cn.Open();

                // PreTest

                // Action
                cn.BulkInsert("key", many1, x => x.Single1, x => x.Single2, x => x.Single3);
            }

            // GET count
            int columnInt = 0;
            int columnUpdateInt = 0;
            int columnInt_Key = 0;
            int columnUpdateInt_Key = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            // Test
            Assert.AreEqual(0, columnInt);
                    Assert.AreEqual(0, columnUpdateInt);
                    Assert.AreEqual(many1.Sum(x => x.ColumnInt) + many1.Sum(x => x.Single1.ColumnInt) + many1.Sum(x => x.Single2.ColumnInt) + many1.Sum(x => x.Single3.ColumnInt), columnInt_Key);
                    Assert.AreEqual(0, columnUpdateInt_Key);
        }
Ejemplo n.º 3
0
		public async Task Z_Test_0147()
		{
            Helper.CleanDatabase();

            var single1 = new SingleMany {ColumnInt = 1};
            var single2 = new SingleMany {ColumnInt = 8};
            var single3 = new SingleMany {ColumnInt = 64};

            var many1 = new List<SingleMany> {new SingleMany {ColumnInt = 512}, new SingleMany {ColumnInt = 1024}, new SingleMany {ColumnInt = 2048}};
            var many2 = new List<SingleMany> {new SingleMany {ColumnInt = 4096}, new SingleMany {ColumnInt = 8192}, new SingleMany {ColumnInt = 16384}};
            var many3 = new List<SingleMany> {new SingleMany {ColumnInt = 32768}, new SingleMany {ColumnInt = 65536}, new SingleMany {ColumnInt = 131072}};

            Helper.LinkSingleMany(single1, single2, single3, many1, many2, many3);
            Helper.InsertFromMetas("BulkInsert2;BulkInsert3;UpdateValue2;UpdateValue3".Split(';').ToList(), single1, single2, single3, many1, many2, many3);
            Helper.UpdateFromMetas("BulkInsert2;BulkInsert3;UpdateValue2;UpdateValue3".Split(';').ToList(), single1, single2, single3, many1, many2, many3);

            // GET count before
            int columnInt_before = 0;
            int columnUpdateInt_before = 0;
            int columnInt_Key_before = 0;
            int columnUpdateInt_Key_before = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key_before = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            using (var cn = Helper.GetConnection())
            {
                cn.Open();

                // PreTest

                // Action
                await cn.BulkActionAsync(action => action.BulkMerge(single1, single2, single3));
            }

			// GET count
            int columnInt = 0;
            int columnUpdateInt = 0;
            int columnInt_Key = 0;
            int columnUpdateInt_Key = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            // Test
			Assert.AreEqual(columnInt_before + single1.ColumnInt, columnInt);
					Assert.AreEqual(single2.ColumnInt + single3.ColumnInt, columnUpdateInt);
					Assert.AreEqual(columnInt_Key_before, columnInt_Key);
					Assert.AreEqual(columnUpdateInt_Key_before, columnUpdateInt_Key);
		}
Ejemplo n.º 4
0
        public static void InsertFromMetas(List<string> metas, SingleMany single1, SingleMany single2, SingleMany single3, List<SingleMany> many1, List<SingleMany> many2, List<SingleMany> many3)
        {
            var count = 0;

            if (metas.Contains("BulkInsertAll") || metas.Contains("BulkInsert1"))
            {
                using (var connection = GetConnection())
                {
                    connection.Open();

                    var list = new List<SingleMany>();
                    list.Add(single1);
                    list.AddRange(many1);
                    list.AddRange(many1.Select(x => x.Single1));
                    list.AddRange(many2.Select(x => x.Single1));
                    list.AddRange(many3.Select(x => x.Single1));
                    list.AddRange(many1.SelectMany(y => y.Many1));
                    list.AddRange(many2.SelectMany(y => y.Many1));
                    list.AddRange(many3.SelectMany(y => y.Many1));

                    connection.BulkInsert(list);
                    connection.BulkInsert("key", list);
                }

                count += single1.ColumnInt + many1.Sum(x => x.ColumnInt);
            }

            if (metas.Contains("BulkInsertAll") || metas.Contains("BulkInsert2"))
            {
                using (var connection = GetConnection())
                {
                    connection.Open();
                    //connection.BulkInsert(single2).BulkInsert(many2)
                    //    .AlsoBulkInsert(x => x.Single1).AlsoBulkInsert(x => x.Single2).AlsoBulkInsert(x => x.Single3)
                    //    .AlsoBulkInsert(x => x.Many1).AlsoBulkInsert(x => x.Many2).AlsoBulkInsert(x => x.Many3);
                    //connection.BulkInsert("key", single2).BulkInsert("key", many2)
                    //.AlsoBulkInsert("key", x => x.Single1).AlsoBulkInsert("key", x => x.Single2).AlsoBulkInsert("key", x => x.Single3)
                    //.AlsoBulkInsert("key", x => x.Many1).AlsoBulkInsert("key", x => x.Many2).AlsoBulkInsert("key", x => x.Many3);

                    var list = new List<SingleMany>();
                    list.Add(single2);
                    list.AddRange(many2);
                    list.AddRange(many1.Select(x => x.Single2));
                    list.AddRange(many2.Select(x => x.Single2));
                    list.AddRange(many3.Select(x => x.Single2));
                    list.AddRange(many1.SelectMany(y => y.Many2));
                    list.AddRange(many2.SelectMany(y => y.Many2));
                    list.AddRange(many3.SelectMany(y => y.Many2));

                    connection.BulkInsert(list);
                    connection.BulkInsert("key", list);
                }

                count += single2.ColumnInt + many2.Sum(x => x.ColumnInt);
            }

            if (metas.Contains("BulkInsertAll") || metas.Contains("BulkInsert3"))
            {
                using (var connection = GetConnection())
                {
                    connection.Open();
                    //connection.BulkInsert(single3).BulkInsert(many3)
                    //    .AlsoBulkInsert(x => x.Single1).AlsoBulkInsert(x => x.Single2).AlsoBulkInsert(x => x.Single3)
                    //    .AlsoBulkInsert(x => x.Many1).AlsoBulkInsert(x => x.Many2).AlsoBulkInsert(x => x.Many3);
                    //connection.BulkInsert("key", single3).BulkInsert("key", many3)
                    //.AlsoBulkInsert("key", x => x.Single1).AlsoBulkInsert("key", x => x.Single2).AlsoBulkInsert("key", x => x.Single3)
                    //.AlsoBulkInsert("key", x => x.Many1).AlsoBulkInsert("key", x => x.Many2).AlsoBulkInsert("key", x => x.Many3);
                    //
                    var list = new List<SingleMany>();
                    list.Add(single3);
                    list.AddRange(many3);
                    list.AddRange(many1.Select(x => x.Single3));
                    list.AddRange(many2.Select(x => x.Single3));
                    list.AddRange(many3.Select(x => x.Single3));
                    list.AddRange(many1.SelectMany(y => y.Many3));
                    list.AddRange(many2.SelectMany(y => y.Many3));
                    list.AddRange(many3.SelectMany(y => y.Many3));

                    connection.BulkInsert(list);
                    connection.BulkInsert("key", list);
                }

                count += single3.ColumnInt + many3.Sum(x => x.ColumnInt);
            }

            //using (var connection = GetConnection())
            //{
            //    connection.Open();

            //    using (var command = connection.CreateCommand())
            //    {
            //        command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
            //        Assert.AreEqual(count, Convert.ToInt32(command.ExecuteScalar()));

            //        command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
            //        Assert.AreEqual(count, Convert.ToInt32(command.ExecuteScalar()));
            //    }
            //}
        }
Ejemplo n.º 5
0
        public static void UpdateFromMetas(List<string> metas, SingleMany single1, SingleMany single2, SingleMany single3, List<SingleMany> many1, List<SingleMany> many2, List<SingleMany> many3)
        {
            if (metas.Contains("UpdateValueAll") || metas.Contains("UpdateValue1"))
            {
                single1.ColumnUpdateInt = single1.ColumnInt;
                many1.ForEach(x => x.ColumnUpdateInt = x.ColumnInt);

                many1.ForEach(x => x.Many1.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));
                many2.ForEach(x => x.Many1.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));
                many3.ForEach(x => x.Many1.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));

                many1.ForEach(x => x.Single1.ColumnUpdateInt = x.Single1.ColumnInt);
                many2.ForEach(x => x.Single1.ColumnUpdateInt = x.Single1.ColumnInt);
                many3.ForEach(x => x.Single1.ColumnUpdateInt = x.Single1.ColumnInt);
            }

            if (metas.Contains("UpdateValueAll") || metas.Contains("UpdateValue2"))
            {
                single2.ColumnUpdateInt = single2.ColumnInt;
                many2.ForEach(x => x.ColumnUpdateInt = x.ColumnInt);

                many1.ForEach(x => x.Many2.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));
                many2.ForEach(x => x.Many2.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));
                many3.ForEach(x => x.Many2.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));

                many1.ForEach(x => x.Single2.ColumnUpdateInt = x.Single2.ColumnInt);
                many2.ForEach(x => x.Single2.ColumnUpdateInt = x.Single2.ColumnInt);
                many3.ForEach(x => x.Single2.ColumnUpdateInt = x.Single2.ColumnInt);
            }

            if (metas.Contains("UpdateValueAll") || metas.Contains("UpdateValue3"))
            {
                single3.ColumnUpdateInt = single3.ColumnInt;
                many3.ForEach(x => x.ColumnUpdateInt = x.ColumnInt);

                many1.ForEach(x => x.Many3.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));
                many2.ForEach(x => x.Many3.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));
                many3.ForEach(x => x.Many3.ForEach(y => y.ColumnUpdateInt = y.ColumnInt));

                many1.ForEach(x => x.Single3.ColumnUpdateInt = x.Single3.ColumnInt);
                many2.ForEach(x => x.Single3.ColumnUpdateInt = x.Single3.ColumnInt);
                many3.ForEach(x => x.Single3.ColumnUpdateInt = x.Single3.ColumnInt);
            }
        }
Ejemplo n.º 6
0
        public static void LinkSingleMany(SingleMany single1, SingleMany single2, SingleMany single3, List<SingleMany> many1, List<SingleMany> many2, List<SingleMany> many3)
        {
            single1.Single1 = single1;
            single1.Single2 = single2;
            single1.Single3 = single3;

            single2.Single1 = single1;
            single2.Single2 = single2;
            single2.Single3 = single3;

            single3.Single1 = single1;
            single3.Single2 = single2;
            single3.Single3 = single3;

            single1.Many1 = many1;
            single1.Many2 = many2;
            single1.Many3 = many3;

            single2.Many1 = many1;
            single2.Many2 = many2;
            single2.Many3 = many3;

            single3.Many1 = many1;
            single3.Many2 = many2;
            single3.Many3 = many3;

            many1.ForEach(x => x.Single1 = new SingleMany {ColumnInt = single1.ColumnInt});
            many1.ForEach(x => x.Single2 = new SingleMany {ColumnInt = single2.ColumnInt});
            many1.ForEach(x => x.Single3 = new SingleMany {ColumnInt = single3.ColumnInt});

            many2.ForEach(x => x.Single1 = new SingleMany {ColumnInt = single1.ColumnInt});
            many2.ForEach(x => x.Single2 = new SingleMany {ColumnInt = single2.ColumnInt});
            many2.ForEach(x => x.Single3 = new SingleMany {ColumnInt = single3.ColumnInt});

            many3.ForEach(x => x.Single1 = new SingleMany {ColumnInt = single1.ColumnInt});
            many3.ForEach(x => x.Single2 = new SingleMany {ColumnInt = single2.ColumnInt});
            many3.ForEach(x => x.Single3 = new SingleMany {ColumnInt = single3.ColumnInt});

            many1.ForEach(x => x.Many1 = new List<SingleMany> {new SingleMany {ColumnInt = single1.ColumnInt}});
            many1.ForEach(x => x.Many2 = new List<SingleMany> {new SingleMany {ColumnInt = single2.ColumnInt}});
            many1.ForEach(x => x.Many3 = new List<SingleMany> {new SingleMany {ColumnInt = single3.ColumnInt}});

            many2.ForEach(x => x.Many1 = new List<SingleMany> {new SingleMany {ColumnInt = single1.ColumnInt}});
            many2.ForEach(x => x.Many2 = new List<SingleMany> {new SingleMany {ColumnInt = single2.ColumnInt}});
            many2.ForEach(x => x.Many3 = new List<SingleMany> {new SingleMany {ColumnInt = single3.ColumnInt}});

            many3.ForEach(x => x.Many1 = new List<SingleMany> {new SingleMany {ColumnInt = single1.ColumnInt}});
            many3.ForEach(x => x.Many2 = new List<SingleMany> {new SingleMany {ColumnInt = single2.ColumnInt}});
            many3.ForEach(x => x.Many3 = new List<SingleMany> {new SingleMany {ColumnInt = single3.ColumnInt}});

            //many1.ForEach(x => x.Many1 = new List<SingleMany>() {new SingleMany() {ColumnInt = 262576}});
            //many1.ForEach(x => x.Many2 = new List<SingleMany>() {new SingleMany() {ColumnInt = 525152}});
            //many1.ForEach(x => x.Many3 = new List<SingleMany>() {new SingleMany() {ColumnInt = 1050304}});

            //many2.ForEach(x => x.Many1 = new List<SingleMany>() {new SingleMany() {ColumnInt = 2100608}});
            //many2.ForEach(x => x.Many2 = new List<SingleMany>() {new SingleMany() {ColumnInt = 4201216}});
            //many2.ForEach(x => x.Many3 = new List<SingleMany>() {new SingleMany() {ColumnInt = 8402432}});

            //many3.ForEach(x => x.Many1 = new List<SingleMany>() {new SingleMany() {ColumnInt = 16804864}});
            //many3.ForEach(x => x.Many2 = new List<SingleMany>() {new SingleMany() {ColumnInt = 33609728}});
            //many3.ForEach(x => x.Many3 = new List<SingleMany>() {new SingleMany() {ColumnInt = 67219456}});

            //many1.ForEach(x => x.Single1 = new SingleMany() {ColumnInt = 1});
            //many1.ForEach(x => x.Single2 = new SingleMany() {ColumnInt = 2});
            //many1.ForEach(x => x.Single3 = new SingleMany() {ColumnInt = 3});

            //many2.ForEach(x => x.Single1 = new SingleMany() {ColumnInt = 4});
            //many2.ForEach(x => x.Single2 = new SingleMany() {ColumnInt = 5});
            //many2.ForEach(x => x.Single3 = new SingleMany() {ColumnInt = 6});

            //many3.ForEach(x => x.Single1 = new SingleMany() {ColumnInt = 7});
            //many3.ForEach(x => x.Single2 = new SingleMany() {ColumnInt = 8});
            //many3.ForEach(x => x.Single3 = new SingleMany() {ColumnInt = 9});
        }
Ejemplo n.º 7
0
        public void Z_Test_0019()
        {
            Helper.CleanDatabase();

            var single1 = new SingleMany {
                ColumnInt = 1
            };
            var single2 = new SingleMany {
                ColumnInt = 8
            };
            var single3 = new SingleMany {
                ColumnInt = 64
            };

            var many1 = new List <SingleMany> {
                new SingleMany {
                    ColumnInt = 512
                }, new SingleMany {
                    ColumnInt = 1024
                }, new SingleMany {
                    ColumnInt = 2048
                }
            };
            var many2 = new List <SingleMany> {
                new SingleMany {
                    ColumnInt = 4096
                }, new SingleMany {
                    ColumnInt = 8192
                }, new SingleMany {
                    ColumnInt = 16384
                }
            };
            var many3 = new List <SingleMany> {
                new SingleMany {
                    ColumnInt = 32768
                }, new SingleMany {
                    ColumnInt = 65536
                }, new SingleMany {
                    ColumnInt = 131072
                }
            };

            Helper.LinkSingleMany(single1, single2, single3, many1, many2, many3);
            Helper.InsertFromMetas("".Split(';').ToList(), single1, single2, single3, many1, many2, many3);
            Helper.UpdateFromMetas("".Split(';').ToList(), single1, single2, single3, many1, many2, many3);

            // GET count before
            int columnInt_before           = 0;
            int columnUpdateInt_before     = 0;
            int columnInt_Key_before       = 0;
            int columnUpdateInt_Key_before = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt_before    = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText    = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText  = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText        = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key_before = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            using (var cn = Helper.GetConnection())
            {
                cn.Open();

                // PreTest

                // Action
                cn.BulkInsert("key", many1).AlsoBulkInsert("key", x => x.Many2);
            }

            // GET count
            int columnInt           = 0;
            int columnUpdateInt     = 0;
            int columnInt_Key       = 0;
            int columnUpdateInt_Key = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt           = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt     = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key       = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            // Test
            Assert.AreEqual(0, columnInt);
            Assert.AreEqual(0, columnUpdateInt);
            Assert.AreEqual(many1.Sum(x => x.ColumnInt) + many1.Sum(x => x.Many2.Sum(y => y.ColumnInt)), columnInt_Key);
            Assert.AreEqual(0, columnUpdateInt_Key);
        }
Ejemplo n.º 8
0
        public async Task Z_Test_0098()
        {
            Helper.CleanDatabase();

            var single1 = new SingleMany {
                ColumnInt = 1
            };
            var single2 = new SingleMany {
                ColumnInt = 8
            };
            var single3 = new SingleMany {
                ColumnInt = 64
            };

            var many1 = new List <SingleMany> {
                new SingleMany {
                    ColumnInt = 512
                }, new SingleMany {
                    ColumnInt = 1024
                }, new SingleMany {
                    ColumnInt = 2048
                }
            };
            var many2 = new List <SingleMany> {
                new SingleMany {
                    ColumnInt = 4096
                }, new SingleMany {
                    ColumnInt = 8192
                }, new SingleMany {
                    ColumnInt = 16384
                }
            };
            var many3 = new List <SingleMany> {
                new SingleMany {
                    ColumnInt = 32768
                }, new SingleMany {
                    ColumnInt = 65536
                }, new SingleMany {
                    ColumnInt = 131072
                }
            };

            Helper.LinkSingleMany(single1, single2, single3, many1, many2, many3);
            Helper.InsertFromMetas("BulkInsertAll".Split(';').ToList(), single1, single2, single3, many1, many2, many3);
            Helper.UpdateFromMetas("BulkInsertAll".Split(';').ToList(), single1, single2, single3, many1, many2, many3);

            // GET count before
            int columnInt_before           = 0;
            int columnUpdateInt_before     = 0;
            int columnInt_Key_before       = 0;
            int columnUpdateInt_Key_before = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt_before    = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText    = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText  = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key_before = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText        = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key_before = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            using (var cn = Helper.GetConnection())
            {
                cn.Open();

                // PreTest

                // Action
                await cn.BulkActionAsync(action => action.BulkDelete(single1, single2));
            }

            // GET count
            int columnInt           = 0;
            int columnUpdateInt     = 0;
            int columnInt_Key       = 0;
            int columnUpdateInt_Key = 0;

            using (var connection = Helper.GetConnection())
            {
                connection.Open();

                using (var command = connection.CreateCommand())
                {
                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany), 0)";
                    columnInt           = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany), 0)";
                    columnUpdateInt     = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnInt) FROM SingleMany_Key), 0)";
                    columnInt_Key       = Convert.ToInt32(command.ExecuteScalar());

                    command.CommandText = "SELECT ISNULL((SELECT SUM(ColumnUpdateInt) FROM SingleMany_Key), 0)";
                    columnUpdateInt_Key = Convert.ToInt32(command.ExecuteScalar());
                }
            }

            // Test
            Assert.AreEqual(columnInt_before - single1.ColumnInt - single2.ColumnInt, columnInt);
            Assert.AreEqual(columnUpdateInt_before, columnUpdateInt);
            Assert.AreEqual(columnInt_Key_before, columnInt_Key);
            Assert.AreEqual(columnUpdateInt_Key_before, columnUpdateInt_Key);
        }