Esempio n. 1
0
 /// <summary>
 /// Constructor to create the instance.
 /// </summary>
 public DataMigrationForm()
 {
     InitializeComponent();
     _dataMigrationHelper = new DataMigrationHelper(ShowMessage);
     VisibleChanged += OnVisibleChangedEvent;
     _timer.Tick += OnTimerTick;
 }
Esempio n. 2
0
        public void OrderBy()
        {
            var maxItems = 250;

            DataMigrationHelper.AddUsers(maxItems, DbAccess);
            var elementProducer =
                CreateQuery().Select.Table <Users>().Order.By(s => s.UserName)
                .ThenBy(f => f.UserID)
                .ForResult(_asyncEnumeration).ToArray();
            var directQuery =
                DbAccess.SelectNative <Users>(UsersMeta.SelectStatement + " ORDER BY UserName, User_ID");

            Assert.That(directQuery.Length, Is.EqualTo(elementProducer.Length));

            for (var index = 0; index < directQuery.Length; index++)
            {
                var userse = directQuery[index];
                var userbe = elementProducer[index];
                Assert.That(userbe.UserID, Is.EqualTo(userse.UserID));
                Assert.That(userbe.UserName, Is.EqualTo(userse.UserName));
            }
        }
Esempio n. 3
0
        public void JoinInCte()
        {
            DataMigrationHelper.AddBooksWithImage(250, 10, DbAccess);
            var books = Measure(() => CreateQuery()
                                .WithCte(e => e
                                         .Select
                                         .Table <ImageWithFkBooks>()
                                         .Join(f => f.Book),
                                         out var cteId)
                                .Select
                                .Identifier <ImageWithFkBooks>(cteId)
                                .ToArray());

            foreach (var imageWithFkBookse in books)
            {
                Assert.That(imageWithFkBookse.Book, Is.Not.Null);
                Assert.That(imageWithFkBookse.Book.Text, Is.Not.Null);
                Assert.That(imageWithFkBookse.Book.BookId, Is.EqualTo(imageWithFkBookse.IdBook));
            }

            Assert.That(books, Is.Not.Null);
        }
Esempio n. 4
0
        public void SelectBase()
        {
            DataMigrationHelper.AddUsers(1, DbAccess);
            var refSelect = DbAccess.Select <Users>();

            Assert.IsTrue(refSelect.Length > 0);

            var testInsertName = Guid.NewGuid().ToString();
            var testUser       = DbAccess.InsertWithSelect(new Users {
                UserName = testInsertName
            });

            Assert.IsNotNull(testUser);
            Assert.AreNotEqual(testUser.UserID, default(long));

            var selTestUser =
                DbAccess.Select <Users_PK_IDFM_FUNCSELECTFACWITHPARAM>(new object[] { testUser.UserID }).FirstOrDefault();

            Assert.That(selTestUser, Is.Not.Null);
            Assert.AreEqual(selTestUser.UserName, testUser.UserName);
            Assert.AreEqual(selTestUser.UserId, testUser.UserID);
        }
Esempio n. 5
0
        public void NestedTransactionTestRollback()
        {
            //DbAccess.Database.AllowNestedTransactions = Type == DbAccessType.SqLite;

            DataMigrationHelper.AddUsers(250, DbAccess);
            var count =
                DbAccess.SelectNative(typeof(long), "SELECT COUNT(1) FROM " + UsersMeta.TableName).FirstOrDefault();

            DbAccess.Database.RunInTransaction(dd =>
            {
                DbAccess.Database.RunInTransaction(ddx =>
                {
                    DbAccess.Delete <Users>();
                    ddx.TransactionRollback();
                });
            });

            var countAfter =
                DbAccess.SelectNative(typeof(long), "SELECT COUNT(1) FROM " + UsersMeta.TableName).FirstOrDefault();

            Assert.That(count, Is.EqualTo(countAfter));
        }
Esempio n. 6
0
        public void CheckFactory()
        {
            DataMigrationHelper.AddUsers(1, DbAccess);
            Assert.That(() => DbAccess.Select <Users_StaticQueryFactoryForSelect>(), Is.Not.Empty);

            var testInsertName = Guid.NewGuid().ToString();
            Users_StaticQueryFactoryForSelect testUser = null;

            Assert.That(
                () =>
                testUser =
                    DbAccess.InsertWithSelect(new Users_StaticQueryFactoryForSelect {
                UserName = testInsertName
            }),
                Is.Not.Null
                .And.Property("UserId").Not.EqualTo(0));

            var selTestUser = DbAccess.Select <Users_StaticQueryFactoryForSelect>(testUser.UserId);

            Assert.AreEqual(selTestUser.UserName, testUser.UserName);
            Assert.AreEqual(selTestUser.UserId, testUser.UserId);
        }
        public void NestedTransactionTestRollback()
        {
            //DbAccess.Database.AllowNestedTransactions = Type == DbAccessType.SqLite;

            DataMigrationHelper.AddUsers(250, DbAccess);
            var count =
                DbAccess.SelectNative(typeof(long), DbAccess.Database.CreateCommand(SelectCountOneFromUsers)).FirstOrDefault();

            DbAccess.Database.RunInTransaction(dd =>
            {
                DbAccess.Database.RunInTransaction(ddx =>
                {
                    DbAccess.Delete <Users>();
                    ddx.TransactionRollback();
                });
            });

            var countAfter =
                DbAccess.SelectNative(typeof(long), DbAccess.Database.CreateCommand(SelectCountOneFromUsers)).FirstOrDefault();

            Assert.That(count, Is.EqualTo(countAfter));
        }
Esempio n. 8
0
        public void RefIn()
        {
            var addBooksWithImage = DataMigrationHelper.AddBooksWithImage(250, 2, DbAccess);

            foreach (var id in addBooksWithImage)
            {
                var countOfImages = -1;
                if (DbAccess.DbAccessType == DbAccessType.MsSql)
                {
                    countOfImages =
                        DbAccess.RunPrimetivSelect <int>(
                            string.Format("SELECT COUNT(1) FROM {0} WHERE {0}.{1} = {2}",
                                          ImageMeta.TableName, ImageMeta.ForgeinKeyName,
                                          id))[0];
                }

                if (DbAccess.DbAccessType == DbAccessType.SqLite)
                {
                    countOfImages =
                        (int)
                        DbAccess.RunPrimetivSelect <long>(
                            string.Format("SELECT COUNT(1) FROM {0} WHERE {0}.{1} = {2}",
                                          ImageMeta.TableName, ImageMeta.ForgeinKeyName,
                                          id))[0];
                }

                Assert.That(countOfImages, Is.EqualTo(2));
                var deSelect =
                    DbAccess.SelectNative <Image>(string.Format("{2} AS b WHERE b.{0} = {1}",
                                                                ImageMeta.ForgeinKeyName, id, ImageMeta.SelectStatement));
                Assert.That(deSelect, Is.Not.Empty);
                Assert.That(deSelect.Length, Is.EqualTo(countOfImages));
                var book      = DbAccess.Select <Book>(id);
                var forResult = CreateQuery().Select.Table <Image>().In(book).ForResult(_asyncEnumeration).ToArray();
                Assert.That(forResult, Is.Not.Empty);
                Assert.That(forResult.Count, Is.EqualTo(countOfImages));
            }
        }
Esempio n. 9
0
        public void TransactionAsyncTestExceptional()
        {
            DbAccess.Database.AllowNestedTransactions = Type == DbAccessType.SqLite;

            DataMigrationHelper.AddUsers(250, DbAccess);
            var count =
                DbAccess.SelectNative(typeof(long), "SELECT COUNT(1) FROM " + UsersMeta.TableName).FirstOrDefault();

            Assert.That(() =>
            {
                DbAccess.Database.RunInTransactionAsync(async dd =>
                {
                    DbAccess.Delete <Users>();
                    await Task.FromResult("");
                    throw new Exception();
                }).Wait();
            }, Throws.Exception);

            var countAfter =
                DbAccess.SelectNative(typeof(long), "SELECT COUNT(1) FROM " + UsersMeta.TableName).FirstOrDefault();

            Assert.That(count, Is.EqualTo(countAfter));
        }
Esempio n. 10
0
        public void UpdateExplicit()
        {
            var addUsers    = DataMigrationHelper.AddUsers(1, DbAccess)[0];
            var user        = DbAccess.Select <Users>(addUsers);
            var userIdPre   = user.UserID;
            var usernamePre = user.UserName;

            user.UserName = Guid.NewGuid().ToString();
            CreateQuery().Update.Table <Users>().Set
            .Column(f => f.UserName).Value(user.UserName)
            .ExecuteNonQuery();
            user = DbAccess.Select <Users>(addUsers);
            Assert.That(user.UserID, Is.EqualTo(userIdPre));
            Assert.That(user.UserName, Is.Not.EqualTo(usernamePre));

            CreateQuery().Update.Table <Users>().Set
            .Column(f => f.UserName).Value(null)
            .ExecuteNonQuery();

            user = DbAccess.Select <Users>(addUsers);
            Assert.That(user.UserID, Is.EqualTo(userIdPre));
            Assert.That(user.UserName, Is.Null);
        }
        public void TransactionAsyncTestExceptional()
        {
            DbAccess.Database.AllowNestedTransactions = Type.HasFlag(DbAccessType.SqLite);

            DataMigrationHelper.AddUsersFast(250, DbAccess);
            var count =
                DbAccess.SelectNative(typeof(long), DbAccess.Database.CreateCommand(SelectCountOneFromUsers)).FirstOrDefault();

            Assert.That(() =>
            {
                DbAccess.Database.RunInTransactionAsync(async dd =>
                {
                    DbAccess.Delete <Users>();
                    await Task.FromResult("");
                    throw new Exception();
                }).Wait();
            }, Throws.Exception);

            var countAfter =
                DbAccess.SelectNative(typeof(long), DbAccess.Database.CreateCommand(SelectCountOneFromUsers)).FirstOrDefault();

            Assert.That(count, Is.EqualTo(countAfter));
        }
Esempio n. 12
0
        public void SelectPrimitivSelect()
        {
            DataMigrationHelper.AddUsers(1, DbAccess);
            var refSelect = DbAccess.RunPrimetivSelect <long>(UsersMeta.SelectPrimaryKeyStatement);

            Assert.IsTrue(refSelect.Any());

            var anyId = refSelect.FirstOrDefault();

            Assert.AreNotEqual(anyId, 0);

            refSelect =
                DbAccess.RunPrimetivSelect <long>(
                    UsersMeta.SelectPrimaryKeyStatement + " WHERE " + UsersMeta.PrimaryKeyName + " = @paramA",
                    new QueryParameter("paramA", anyId));
            Assert.IsTrue(refSelect.Length > 0);

            refSelect =
                DbAccess.RunPrimetivSelect <long>(
                    UsersMeta.SelectPrimaryKeyStatement + " WHERE " + UsersMeta.PrimaryKeyName + " = @paramA",
                    new { paramA = anyId });
            Assert.IsTrue(refSelect.Length > 0);
        }
Esempio n. 13
0
        public void Pager()
        {
            var maxItems = 250;

            DataMigrationHelper.AddUsers(maxItems, DbAccess);
            var basePager = DbAccess.Database.CreatePager <Users>();

            basePager.PageSize = 10;
            basePager.LoadPage(DbAccess);

            Assert.That(basePager.CurrentPage, Is.EqualTo(1));
            Assert.That(basePager.MaxPage, Is.EqualTo(maxItems / basePager.PageSize));

            var queryPager = CreateQuery()
                             .Select.Table <Users>()
                             .Order.By(f => f.UserID)
                             .ForPagedResult(1, basePager.PageSize);

            queryPager.LoadPage(DbAccess);

            Assert.That(basePager.CurrentPage, Is.EqualTo(queryPager.CurrentPage));
            Assert.That(basePager.MaxPage, Is.EqualTo(queryPager.MaxPage));
        }
Esempio n. 14
0
        public void JoinMultipleParent()
        {
            DataMigrationHelper.AddBooksWithImageAndUser(250, 10, DbAccess);

            var books = Measure(() => CreateQuery()
                                .Select.Table <BookWithFkImages>()
                                .Join(nameof(BookWithFkImages.User))
                                .Join(nameof(BookWithFkImages.User1))
                                .ToArray());

            foreach (var book in books)
            {
                Assert.That(book.User, Is.Not.Null);
                Assert.That(book.User.UserName, Is.Not.Null);
                Assert.That(book.User.User_ID, Is.Not.Zero);

                Assert.That(book.User1, Is.Not.Null);
                Assert.That(book.User1.UserName, Is.Not.Null);
                Assert.That(book.User1.User_ID, Is.Not.Zero);
            }

            Assert.That(books, Is.Not.Null);
        }
Esempio n. 15
0
        public void JoinParentAndThenChild()
        {
            DataMigrationHelper.AddBooksWithImage(250, 10, DbAccess);
            var images = Measure(() => CreateQuery()
                                 .Select.Table <ImageWithFkBooks>()
                                 .Join(f => f.Book.Images)
                                 .ToArray());

            Assert.That(images, Is.Not.Null);

            var allBooks  = DbAccess.Select <Book>();
            var allImages = DbAccess.Select <Image>();

            foreach (var imageWithFkBookse in images)
            {
                Assert.That(imageWithFkBookse.Text, Is.Not.Null);
                Assert.That(imageWithFkBookse.Book, Is.Not.Null);

                var book = allBooks.FirstOrDefault(e => e.BookId == imageWithFkBookse.IdBook);

                Assert.That(imageWithFkBookse.Book.Text, Is.EqualTo(book.Text));

                Assert.That(imageWithFkBookse.Book.Images, Is.Not.Null);
                Assert.That(imageWithFkBookse.Book.Images, Is.Not.Empty);

                var imgs = allImages.Where(f => f.IdBook == imageWithFkBookse.IdBook);
                foreach (var image in imageWithFkBookse.Book.Images)
                {
                    var img = imgs.FirstOrDefault(e => e.ImageId == image.ImageId);
                    Assert.That(image.Book, Is.Null);
                    Assert.That(image.Text, Is.Not.Null);
                    Assert.That(image.IdBook, Is.EqualTo(imageWithFkBookse.Book.BookId));
                    Assert.That(img, Is.Not.Null);
                    Assert.That(img.Text, Is.EqualTo(image.Text));
                }
            }
        }
Esempio n. 16
0
        public void SelectPrimitivSelect()
        {
            DataMigrationHelper.AddUsersFast(1, DbAccess);
            var refSelect = DbAccess
                            .RunSelect <long>(DbAccess.Database.CreateCommand(UsersMeta.SelectPrimaryKeyStatement));

            Assert.IsTrue(refSelect.Any());

            var anyId = refSelect.FirstOrDefault();

            Assert.AreNotEqual(anyId, 0);

            refSelect =
                DbAccess.RunSelect <long>(
                    DbAccess.Database.CreateCommandWithParameterValues($"{UsersMeta.SelectPrimaryKeyStatement} WHERE {UsersMeta.PrimaryKeyName} = @paramA",
                                                                       new QueryParameter("paramA", anyId)));
            Assert.IsTrue(refSelect.Length > 0);

            refSelect =
                DbAccess.RunSelect <long>(
                    DbAccess.Database.CreateCommandWithParameterValues(UsersMeta.SelectPrimaryKeyStatement + " WHERE " + UsersMeta.PrimaryKeyName + " = @paramA",
                                                                       new QueryParameter("paramA", anyId)));
            Assert.IsTrue(refSelect.Length > 0);
        }
Esempio n. 17
0
        public void In()
        {
            var maxItems = 250;
            var addUsers = DataMigrationHelper.AddUsers(maxItems, DbAccess);

            var rand = new Random(54541117);

            var elementsToRead = new List <long>();

            for (var i = 0; i < 25; i++)
            {
                elementsToRead.Add(addUsers[rand.Next(0, addUsers.Length)]);
            }

            var elementProducer =
                CreateQuery()
                .Select.Table <Users>()
                .Where.Column(f => f.UserID)
                .Is.In(elementsToRead.ToArray())
                .ExecutionMode(_asyncEnumeration)
                .ToArray();
            var directQuery = DbAccess.RunSelect <Users>(DbAccess.Database.CreateCommand(UsersMeta.SelectStatement
                                                                                         + string.Format(" WHERE User_ID IN ({0})",
                                                                                                         elementsToRead.Select(f => f.ToString())
                                                                                                         .Aggregate((e, f) => e + "," + f))));

            Assert.That(directQuery.Length, Is.EqualTo(elementProducer.Length));

            for (var index = 0; index < directQuery.Length; index++)
            {
                var userse = directQuery[index];
                var userbe = elementProducer[index];
                Assert.That(userbe.UserID, Is.EqualTo(userse.UserID));
                Assert.That(userbe.UserName, Is.EqualTo(userse.UserName));
            }
        }
Esempio n. 18
0
        public void PagerConditionalCall()
        {
            var testUsers = DataMigrationHelper.AddUsers(250, DbAccess);

            var refSelect =
                DbAccess.Database.Run(
                    s => s.GetSkalar(string.Format("SELECT COUNT(*) FROM {0}", UsersMeta.TableName)));

            Assert.That(testUsers.Length, Is.EqualTo(refSelect));

            using (var pager = DbAccess.Database.CreatePager <Users>())
            {
                pager.AppendedComands.Add(
                    DbAccess.Database.CreateCommand(string.Format("WHERE User_ID = {0}", testUsers[0])));

                Assert.That(pager, Is.Not.Null);

                pager.CurrentPage = 1;
                pager.PageSize    = 25;

                Assert.That(pager.MaxPage, Is.EqualTo(0));

                #region CheckEvents

                var triggeredNewPageLoaded  = false;
                var triggeredNewPageLoading = false;

                pager.NewPageLoaded  += () => triggeredNewPageLoaded = true;
                pager.NewPageLoading += () => triggeredNewPageLoading = true;

                pager.LoadPage(DbAccess);

                Assert.That(pager.MaxPage, Is.Not.EqualTo(0));
                Assert.That(triggeredNewPageLoaded, Is.False);
                Assert.That(triggeredNewPageLoading, Is.False);

                pager.RaiseEvents = true;
                pager.LoadPage(DbAccess);

                Assert.That(pager.MaxPage, Is.Not.EqualTo(0));
                Assert.That(triggeredNewPageLoaded);
                Assert.That(triggeredNewPageLoading);

                #endregion

                #region CheckPage Size

                var oldPageSize = pager.PageSize;
                var newPageSize = 20;
                Assert.That(pager.CurrentPageItems.Count, Is.EqualTo(1));

                pager.PageSize = newPageSize;
                Assert.That(pager.PageSize, Is.EqualTo(newPageSize));

                pager.LoadPage(DbAccess);
                Assert.That(pager.MaxPage, Is.Not.EqualTo(0));
                Assert.That(pager.CurrentPageItems.Count, Is.EqualTo(1));

                #endregion
            }
        }
Esempio n. 19
0
 public void SelectPropertyLessPoco()
 {
     DataMigrationHelper.AddUsersFast(1, DbAccess);
     Assert.That(() => DbAccess.Select <UsersWithoutProperties>(), Is.Not.Null.And.Not.Empty);
 }
        public void SharedTransactionCounter()
        {
            var dbOne = new DefaultDatabaseAccess(new ThreadConnectionController());

            dbOne.Attach(new MsSql(DbAccess.Database.ConnectionString));
            var rootAccess = new DbAccessLayer(dbOne, DbAccess.Config);

            Assert.That(rootAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(0));
            Assert.That(rootAccess.Database.ConnectionController.LockRoot, Is.Not.Null);
            Assert.That(rootAccess.Database.ConnectionController.Transaction, Is.Null);

            var dbTwo = new DefaultDatabaseAccess(new ThreadConnectionController());

            dbTwo.Attach(new MsSql(DbAccess.Database.ConnectionString));
            var nestedAccess = new DbAccessLayer(dbTwo, DbAccess.Config);

            Assert.That(nestedAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(0));
            Assert.That(nestedAccess.Database.ConnectionController.LockRoot, Is.EqualTo(dbOne.ConnectionController.LockRoot));
            Assert.That(nestedAccess.Database.ConnectionController.Transaction, Is.Null);

            Assert.That(DbAccess.Database.ConnectionController, Is.Not.EqualTo(dbOne.ConnectionController));
            Assert.That(DbAccess.Database.ConnectionController.LockRoot, Is.Not.EqualTo(dbOne.ConnectionController.LockRoot));

            Assert.That(rootAccess.Database, Is.Not.EqualTo(nestedAccess.Database));
            Assert.That(rootAccess.Database.ConnectionController, Is.Not.EqualTo(nestedAccess.Database.ConnectionController));

            if (Type.HasFlag(DbAccessType.MsSql))
            {
                DbAccess.ExecuteGenericCommand("ALTER DATABASE " + DbAccess.Database.DatabaseName +
                                               " SET ALLOW_SNAPSHOT_ISOLATION ON");
            }

            DbAccess.Database.RunInTransaction((de) =>
            {
                Assert.That(DbAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(1));
                Assert.That(DbAccess.Select <Users>().Length, Is.EqualTo(0));
            }, IsolationLevel.Snapshot);

            rootAccess.Database.RunInTransaction(d =>
            {
                Assert.That(rootAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(nestedAccess.Database.ConnectionController.InstanceCounter));
                Assert.That(rootAccess.Database.ConnectionController.Transaction, Is.EqualTo(nestedAccess.Database.ConnectionController.Transaction));
                Assert.That(rootAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(1));
                DataMigrationHelper.AddUsersFast(10, rootAccess);
                Assert.That(rootAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(1));

                //the nested database runs with the same TransactionCounter as the RootAccess so it should use
                //the same transaction and connection
                nestedAccess.Database.RunInTransaction((de) =>
                {
                    Assert.That(rootAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(2));
                    Assert.That(nestedAccess.Select <Users>().Length, Is.EqualTo(10));
                    DataMigrationHelper.AddUsersFast(10, nestedAccess);
                    Assert.That(rootAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(2));
                });

                Assert.That(nestedAccess.Select <Users>().Length, Is.EqualTo(20));

                DbAccess.Database.RunInTransaction((de) =>
                {
                    Assert.That(DbAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(1));
                    Assert.That(DbAccess.Select <Users>().Length, Is.EqualTo(0));
                }, IsolationLevel.Snapshot);
            }, IsolationLevel.Snapshot);
            DbAccess.Database.RunInTransaction((de) =>
            {
                Assert.That(DbAccess.Database.ConnectionController.InstanceCounter, Is.EqualTo(1));
                Assert.That(DbAccess.Select <Users>().Length, Is.EqualTo(20));
            }, IsolationLevel.Snapshot);
        }