public void VerifyThatTableWithColumnsCanBeCreatedAndRemoved() { var template = new AllTypeThing(); Assert.Throws <InvalidDataException>(() => AllTypeThing.All()); DatabaseSession.Instance.Connector.CreateTableWithColumns(template); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template); Assert.IsTrue(DatabaseSession.Instance.Connector.CheckTableExists(template)); var saveItem1 = new AllTypeThing { Uuid = Guid.NewGuid(), SomeString = string.Empty, SomeDate = DateTime.Now, SomeEnum = ConnectorType.Postgresql }; saveItem1.SomeGuidList.Add(Guid.NewGuid()); saveItem1.SomeGuidList.Add(Guid.NewGuid()); saveItem1.SomeGuidList.Add(Guid.NewGuid()); saveItem1.SomeList.Add("Aleds"); saveItem1.SomeList.Add("Aleds2"); saveItem1.SomeList.Add("Aleds3"); var saveItem2 = new AllTypeThing { Uuid = Guid.NewGuid(), SomeString = string.Empty }; saveItem2.SomeGuidList.Add(Guid.NewGuid()); saveItem2.SomeGuidList.Add(Guid.NewGuid()); saveItem2.SomeList.Add("Aleds"); saveItem2.SomeList.Add("Aleds2"); saveItem2.SomeList.Add("Aleds3"); saveItem1.Save(); saveItem2.Save(); Assert.AreEqual(2, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>().ToList().Count); Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>(limit: 1).ToList().Count); Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>(limit: 20, offset: 1, orderBy: template.GetType().GetProperty(template.PrimaryKey)).ToList().Count); Assert.AreEqual(1, DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>(offset: 1).ToList().Count); var newString = "IsSome"; saveItem1.SomeString = newString; saveItem1.Save(ignoreNull: true); var getSave1 = AllTypeThing.Find(saveItem1.Uuid); Assert.AreEqual(newString, getSave1.SomeString); saveItem1.Delete(); saveItem2.Delete(); saveItem1.Save(); saveItem2.Save(); var transaction = DatabaseSession.Instance.CreateTransaction(); saveItem1.Save(transaction: transaction); saveItem2.Save(transaction: transaction); DatabaseSession.Instance.CommitTransaction(transaction); transaction = DatabaseSession.Instance.CreateTransaction(); saveItem1.Delete(transaction); saveItem2.Delete(transaction); DatabaseSession.Instance.CommitTransaction(transaction); DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(template.GetType().GetProperty(template.PrimaryKey), template); Assert.Throws <InvalidDataException>( () => DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint( template.GetType().GetProperty(template.PrimaryKey), template)); DatabaseSession.Instance.Connector.CreatePrimaryKeyConstraint(template); transaction = DatabaseSession.Instance.CreateTransaction(); DatabaseSession.Instance.Connector.DeletePrimaryKeyConstraint(template.GetType().GetProperty(template.PrimaryKey), template, transaction); DatabaseSession.Instance.CommitTransaction(transaction); Assert.IsEmpty(DatabaseSession.Instance.Connector.ReadRecords <AllTypeThing>().ToList()); DatabaseSession.Instance.Connector.DeleteTable(new AllTypeThing()); }