public void UniversalDataCollectorDataModelUpdateCheck()
        {
            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable1>();
            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable2>();

            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable1>());
            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable2>());

            UniversalDataCollector.Register<SampleTable1>();
            UniversalDataCollector.Register<SampleTable2>();

            for (int i = 0; i < 20; i++)
            {
                var inserted_entry1 = new SampleTable1 { Column1 = i * 10, Column2 = "Sample Data" };
                inserted_entry1.Add();

                var inserted_entry2 = new SampleTable2 { Column1 = i * 10, Column2 = "Sample Data" };
                inserted_entry2.Add();
            }

            Assert.IsTrue(UniversalDataCollector.Select<SampleTable1>().Count == 20);
            Assert.IsTrue(UniversalDataCollector.Select<SampleTable2>().Count == 20);

            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).DeleteMatching<SampleTable1>(new[] { new Selector("Column1", 80, Selector.Operator.LessThan) });

            Assert.IsTrue(UniversalDataCollector.Select<SampleTable2>().Count == 20);
            var other_results = UniversalDataCollector.Select<SampleTable1>();
            Assert.IsTrue(other_results.Count == 12);

            var second_entry = other_results[1] as SampleTable1;

            Assert.IsTrue(other_results.First().Remove());

            Assert.IsTrue(UniversalDataCollector.Select<SampleTable1>().Count == 11);
            Assert.IsTrue(UniversalDataCollector.Select<SampleTable2>().Count == 20);

            second_entry.Column2 = "Does this work";
            Assert.IsTrue(second_entry.Update());

            Assert.IsTrue(UniversalDataCollector.Select<SampleTable1>().Count == 11);
            Assert.IsTrue(UniversalDataCollector.Select<SampleTable2>().Count == 20);

            var grabbed_entry = UniversalDataCollector.Select<SampleTable1>(new []{new Selector("Column1", 90)})[0] as SampleTable1;

            Assert.IsTrue(second_entry.Equals(grabbed_entry));

            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).DeleteAll<SampleTable1>();
            Assert.IsTrue(UniversalDataCollector.Select<SampleTable1>().Count == 0);

            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).DeleteAll<SampleTable2>();
            Assert.IsTrue(UniversalDataCollector.Select<SampleTable2>().Count == 0);
        }
        public void ReferenceKeyViolationException_SampleTable1_2()
        {
            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable1>();
            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable1>());

            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable2>();
            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable2>());

            var inserted_entry = new SampleTable1 { Column1 = 1, Column2 = "Sample Data" };
            inserted_entry.Add();

            var inserted_sample_table2_entry = new SampleTable2 { Column1 = 10, Column2 = "The Next Set of Data", Column3 = inserted_entry.Column1 };
            inserted_sample_table2_entry.Add();

            Assert.IsTrue(Relationship.CheckReferences(inserted_entry));

            try
            {
                inserted_entry.Remove();
                Assert.Fail("No Error was Thrown !");
            }
            catch (DatabaseException ex)
            {
                if (ex.GetErrorType() != DatabaseException.ErrorType.ReferenceKeyViolation)
                {
                    Assert.Fail("The Correct Exception was Thrown, but not the Correct Error Type !");
                }
                else
                {
                    Assert.IsNotNull(ex.GetAdditionalData());
                }
            }
            catch (System.Exception)
            {
                Assert.Fail("Invalid Exception was Thrown !");
            }

            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).Select<SampleTable1>(new[] { new Selector("Column1", inserted_entry.Column1) }).Length == 1);
        }
        public void RegisteringEntityTypeOnUniversalDataCollector()
        {
            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable1>();
            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable2>();

            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable1>());
            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable2>());

            UniversalDataCollector.Register<SampleTable1>();
            UniversalDataCollector.Register<SampleTable2>();

            for (int i = 0; i < 20; i++)
            {
                var inserted_entry1 = new SampleTable1 { Column1 = i * 10, Column2 = "Sample Data" };
                inserted_entry1.Add();

                var inserted_entry2 = new SampleTable2 { Column1 = i * 10, Column2 = "Sample Data" };
                inserted_entry2.Add();
            }

            Assert.IsTrue(UniversalDataCollector.Select<SampleTable1>().Count == 20);
            Assert.IsTrue(UniversalDataCollector.Select<SampleTable2>().Count == 20);
        }
        public void ReferenceCheckValidation_SampleTable2()
        {
            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable1>();
            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable1>());

            GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).CreateTable<SampleTable2>();
            Assert.IsTrue(GenericDatabaseManager.GetDatabaseManager(DatabaseType.MySQL).TableExist<SampleTable2>());

            var inserted_entry = new SampleTable1 { Column1 = 1, Column2 = "Sample Data" };
            inserted_entry.Add();

            var inserted_sample_table2_entry = new SampleTable2 { Column1 = 10, Column2 = "The Next Set of Data", Column3 = inserted_entry.Column1 };
            inserted_sample_table2_entry.Add();

            Assert.IsTrue(Relationship.CheckReferences(inserted_entry));

            inserted_sample_table2_entry.Remove();

            Assert.IsFalse(Relationship.CheckReferences(inserted_entry));
        }