Esempio n. 1
0
        public void ConstraintValidation_DeleteRootWithOneToOneChild_WithRestrictConstraint_ShouldThrowException()
        {
            IDbConnection connection = SetupTables();

            ITransaction transaction = CreateTransaction(connection);
            int          id          = 45;
            ConstraintTestDeleteRestrictRootEntity entity = new ConstraintTestDeleteRestrictRootEntity();

            entity.IdCol = id;
            entity.Name  = "Org-Name";
            entity.Persist(transaction);
            transaction.Commit();

            transaction = CreateTransaction(connection);
            ConstraintTestOne2OneEntity one2OneEntity = new ConstraintTestOne2OneEntity();

            one2OneEntity.IdCol = id;
            one2OneEntity.Name  = "Child-Org-Name";
            one2OneEntity.Persist(transaction);
            transaction.Commit();

            transaction = CreateTransaction(connection);
            ConstraintTestDeleteRestrictRootEntity loadedEntity = new ConstraintTestDeleteRestrictRootEntity();

            LoadEntityWithId(transaction, loadedEntity, id);
            loadedEntity.Status = EntityStatus.Deleted;
            Assert.Throws <PersistException>(() => loadedEntity.Persist(transaction));
            transaction.Commit();
            connection.Close();
        }
Esempio n. 2
0
        public void ConstraintValidation_DeleteOneToOneRoot_WithCascadeConstraint_ShouldDeleteBoth()
        {
            try
            {
                IDbConnection connection = SetupTables();

                ITransaction transaction = CreateTransaction(connection);
                int          id          = 45;
                ConstraintTestDeleteCascadeRootEntity entity = new ConstraintTestDeleteCascadeRootEntity();
                entity.IdCol = id;
                entity.Name  = "Org-Name";
                entity.Persist(transaction);
                transaction.Commit();

                transaction = CreateTransaction(connection);
                ConstraintTestOne2OneEntity one2ManyEntity = new ConstraintTestOne2OneEntity();
                one2ManyEntity.IdCol = id;
                one2ManyEntity.Name  = "Child-Org-Name";
                one2ManyEntity.Persist(transaction);
                transaction.Commit();

                transaction = CreateTransaction(connection);
                ConstraintTestDeleteCascadeRootEntity loadedEntity = new ConstraintTestDeleteCascadeRootEntity();
                LoadEntityWithId(transaction, loadedEntity, id);
                loadedEntity.Status = EntityStatus.Deleted;
                loadedEntity.Persist(transaction);
                transaction.Commit();

                transaction = CreateTransaction(connection);
                bool hasOneToOne = ExistsOne2ManyChild(transaction, id);
                bool hasRoot     = ExistsRoot(transaction, id);
                transaction.Commit();
                connection.Close();

                Assert.IsFalse(hasOneToOne);
                Assert.IsFalse(hasRoot);
            }
            catch (System.Exception e)
            {
                LogManager.GetLogger(typeof(DbGateConstraintValidationTest)).Fatal(e.Message, e);
                Assert.Fail(e.Message);
            }
        }