private static DatabaseSchema PrepareModel() { var schema = new DatabaseSchema(null, null); schema.AddTable("Categories") .AddColumn("CategoryId", DbType.Int32).AddPrimaryKey() .AddColumn("CategoryName", DbType.String); schema.AddTable("Suppliers") .AddColumn("SupplierId", DbType.Int32).AddPrimaryKey() .AddColumn("SupplierName", DbType.String); schema.AddTable("Products") .AddColumn("ProductId", DbType.Int32).AddPrimaryKey().AddIdentity() .AddColumn("ProductName", DbType.String) .AddColumn("SupplierKey", DbType.Int32).AddForeignKey("fk", "Suppliers"); schema.AddTable("CategoryProducts") .AddColumn("CategoryId", DbType.Int32).AddPrimaryKey() .AddForeignKey("fk", "Categories") .AddColumn("ProductId", DbType.Int32).AddPrimaryKey() .AddForeignKey("fk", "Products"); DatabaseSchemaFixer.UpdateReferences(schema); PrepareSchemaNames.Prepare(schema, new Namer()); return schema; }
public void TestSimpleMapping() { //arrange var schema = new DatabaseSchema(null, null); schema.AddTable("Categories") .AddColumn("CategoryId", DbType.Int32).AddPrimaryKey() .AddColumn("CategoryName", DbType.String); var products = schema.AddTable("Products") .AddColumn("ProductId", DbType.Int32).AddPrimaryKey() .AddColumn("ProductName", DbType.String) .AddColumn("CategoryId", DbType.Int32).AddForeignKey("fk", "Categories") .Table; DatabaseSchemaFixer.UpdateReferences(schema); var settings = new CodeWriterSettings { Namespace = "MyTest", CodeTarget = CodeTarget.PocoNHibernateHbm }; PrepareSchemaNames.Prepare(schema, settings.Namer); //act var target = new MappingWriter(products, settings); var txt = target.Write(); //assert var errors = Validate(txt); Assert.IsFalse(errors); }
private static DatabaseSchema Arrange() { var schema = new DatabaseSchema(null, null); schema.AddTable("Categories") .AddColumn<int>("CategoryId").AddPrimaryKey() .AddColumn<string>("CategoryName") .AddTable("Products") .AddColumn<int>("ProductId").AddPrimaryKey() .AddColumn<string>("ProductName"); var assoc = schema.AddTable("ProductCategories") .AddColumn<int>("CategoryId").AddPrimaryKey().AddForeignKey("Categories") .AddColumn<int>("ProductId").AddForeignKey("Products") .Table; assoc.PrimaryKey.AddColumn(assoc.FindColumn("ProductId")); DatabaseSchemaFixer.UpdateDataTypes(schema); //make sure .Net names are assigned PrepareSchemaNames.Prepare(schema, new Namer()); return schema; }
public void TestReferencedTableViaConstraintName() { //create a schema var schema = new DatabaseSchema(null, SqlType.SqlServer); schema.AddTable("Products") .AddColumn("ProductId").AddPrimaryKey() .AddColumn("ProductName") .AddColumn("CategoryId") .AddTable("Categories") .AddColumn("CategoryId").AddPrimaryKey("CategoryPK") .AddColumn("CategoryName") ; //look at the schema var categories = schema.FindTableByName("Categories"); var products = schema.FindTableByName("Products"); //from the database we normally get a RefersToTable defined. //sometimes we don't- we just get the name of the pk constraint //so here we simulate that var fk = new DatabaseConstraint { ConstraintType = ConstraintType.ForeignKey, TableName = "Categories", RefersToConstraint = "CategoryPK" }; fk.Columns.Add("CategoryId"); products.AddConstraint(fk); //act var referencedTable = fk.ReferencedTable(schema); //assert Assert.AreEqual(categories, referencedTable); }
public void WriteTest() { //arrange var schema = new DatabaseSchema(null, null); var table = schema.AddTable("Categories") .AddColumn("CategoryId", "INT").AddPrimaryKey().AddIdentity() .AddColumn("CategoryName", "NVARCHAR").Table; //we need datatypes schema.DataTypes.Add(new DataType("INT", "System.Int32")); schema.DataTypes.Add(new DataType("NVARCHAR", "System.String")); DatabaseSchemaFixer.UpdateDataTypes(schema); //make sure .Net names are assigned PrepareSchemaNames.Prepare(schema, new Namer()); var cw = new ClassWriter(table, new CodeWriterSettings()); //act var txt = cw.Write(); //assert var hasName = txt.Contains("public class Category"); var hasCategoryId = txt.Contains("public virtual int CategoryId { get; set; }"); var hasCategoryName = txt.Contains("public virtual string CategoryName { get; set; }"); Assert.IsTrue(hasName); Assert.IsTrue(hasCategoryId); Assert.IsTrue(hasCategoryName); }
public void WriteTest() { //arrange var schema = new DatabaseSchema(null, null); var table = schema.AddTable("Categories") .AddColumn("CategoryId", "INT").AddPrimaryKey().AddIdentity() .AddColumn("CategoryName", "NVARCHAR").Table; //we need datatypes schema.DataTypes.Add(new DataType("INT", "System.Int32")); schema.DataTypes.Add(new DataType("NVARCHAR", "System.String")); DatabaseSchemaFixer.UpdateDataTypes(schema); //make sure .Net names are assigned PrepareSchemaNames.Prepare(schema, new Namer()); //inject the custom code inserter var codeWriterSettings = new CodeWriterSettings {CodeInserter = new CustomCodeInserter()}; var cw = new ClassWriter(table, codeWriterSettings); //act var txt = cw.Write(); //assert Assert.IsTrue(txt.Contains("using System.ComponentModel.DataAnnotations.Schema")); Assert.IsTrue(txt.Contains("[Table(\"Categories\")]")); Assert.IsTrue(txt.Contains("[Column(\"CategoryId\")]")); }
public void RemoveTable() { //arrange var schema = new DatabaseSchema(null, null); schema .AddTable("Category") .AddColumn<int>("CategoryId").AddPrimaryKey() .AddColumn<string>("CategoryName").AddLength(50).AddNullable() .AddTable("Product") .AddColumn<int>("Id").AddPrimaryKey() .AddColumn<int>("CategoryId").AddForeignKey("Category") .AddTable("Vendor") .AddColumn<int>("Id").AddPrimaryKey() .AddColumn<int>("CategoryId").AddForeignKey("Category") ; //act schema.RemoveTable("Category"); //assert Assert.AreEqual(2, schema.Tables.Count); var prod = schema.FindTableByName("Product"); Assert.AreEqual(0, prod.ForeignKeys.Count); var categoryId = prod.FindColumn("CategoryId"); Assert.IsFalse(categoryId.IsForeignKey); }
public void DataTypeWithTypeTest() { //arrange var schema = new DatabaseSchema(null, null); schema .AddTable("Categories") .AddColumn<int>("CategoryId").AddPrimaryKey() .AddColumn<string>("CategoryName").AddLength(50).AddNullable() .AddColumn<decimal>("StockLevel").AddPrecisionScale(8, 2).AddNullable() .AddColumn<DateTime>("Updated"); //assert var cats = schema.FindTableByName("Categories"); var id = cats.PrimaryKeyColumn; Assert.AreEqual("INT", id.DbDataType); Assert.AreEqual(true, id.DataType.IsInt); var catName = cats.FindColumn("CategoryName"); Assert.AreEqual("NVARCHAR", catName.DbDataType); Assert.AreEqual(true, catName.DataType.IsString); var stock = cats.FindColumn("StockLevel"); Assert.AreEqual("DECIMAL", stock.DbDataType); Assert.AreEqual(true, stock.DataType.IsNumeric); var updated = cats.FindColumn("Updated"); Assert.AreEqual("DATETIME", updated.DbDataType); Assert.AreEqual(true, updated.DataType.IsDateTime); }
public void TestForeignKeysToUniqueKey() { //arrange var schema = new DatabaseSchema(null, null); schema.AddTable("Target") .AddColumn<int>("Target_Id").AddPrimaryKey("TARGET_PK") .AddColumn<string>("Name").AddLength(10).AddUniqueKey("TARGET_UQ1") .AddTable("Source") .AddColumn<int>("Source_Id").AddPrimaryKey("SOURCE_PK") .AddColumn<string>("Target_Name"); var source = schema.FindTableByName("Source"); var target = schema.FindTableByName("Target"); source.AddConstraint(new DatabaseConstraint { ConstraintType = ConstraintType.ForeignKey, Name = "SOURCE_FK", RefersToTable = "Target", TableName = "Source", RefersToConstraint = "TARGET_UQ1", }); var fk = source.ForeignKeys[0]; fk.Columns.Add("Target_Name"); //act var referencedColumns = fk.ReferencedColumns(schema); //assert Assert.AreEqual(target.UniqueKeys[0].Columns, referencedColumns, "Columns are matched up"); }
public void FindOracleAutoNumberTrigger() { //arrange var schema = new DatabaseSchema(null, SqlType.Oracle); var table = schema.AddTable("Test"); var id = table.AddColumn<int>("Id").AddPrimaryKey(); id.IsAutoNumber = true; table.AddColumn<string>("Name").AddLength(200); var databaseTrigger = new DatabaseTrigger { Name = "Test_INS_TRG", TriggerEvent = "INSERT", TriggerBody = @"BEGIN SELECT ""Test_SEQ"".NEXTVAL INTO :NEW.""Id"" FROM DUAL; END;", TriggerType = "BEFORE EACH ROW", }; table.Triggers.Add(databaseTrigger); var databaseSequence = new DatabaseSequence { IncrementBy = 1, MinimumValue = 0, Name = "Test_SEQ" }; schema.Sequences.Add(databaseSequence); //act var result = OracleSequenceTrigger.FindTrigger(table); //assert Assert.IsNotNull(result); Assert.IsNotNull(result.DatabaseTrigger); Assert.IsNotNull(result.DatabaseSequence); Assert.AreEqual(databaseSequence, result.DatabaseSequence); Assert.AreEqual(databaseTrigger, result.DatabaseTrigger); }
public void GivenUnnamedConstraintsThenStandardNamesAssigned() { //arrange var schema = new DatabaseSchema(null, SqlType.PostgreSql); schema .AddTable("Category") .AddColumn<int>("CategoryId").AddPrimaryKey() .AddColumn<string>("CategoryName").AddLength(50).AddNullable() .AddTable("Product") .AddColumn<int>("Id").AddPrimaryKey() .AddColumn<string>("ProductName").AddLength(50).AddUniqueKey() .AddColumn<int>("CategoryId").AddForeignKey("Category") ; var table = schema.FindTableByName("Product"); var ddlGen = new DdlGeneratorFactory(SqlType.PostgreSql); var tabGen = ddlGen.TableGenerator(table); //act var ddl = tabGen.Write(); //assert var hasPrimaryKey = ddl.Contains("ALTER TABLE \"Product\" ADD CONSTRAINT \"Product_Id_pkey\" PRIMARY KEY (\"Id\");"); var hasUniqueKey = ddl.Contains("ALTER TABLE \"Product\" ADD CONSTRAINT \"Product_ProductName_key\" UNIQUE (\"ProductName\");"); Assert.IsTrue(hasPrimaryKey); Assert.IsTrue(hasUniqueKey); }
public void TestOracleTableWithTrigger() { //arrange var schema = new DatabaseSchema(null, SqlType.Oracle); var table = schema.AddTable("Test"); var id = table.AddColumn<int>("Id").AddPrimaryKey(); id.IsAutoNumber = true; table.AddColumn<string>("Name").AddLength(200); table.Triggers.Add(new DatabaseTrigger { Name = "Test_INS_TRG", TriggerEvent = "INSERT", TriggerBody = @"BEGIN SELECT ""Test_SEQ"".NEXTVAL INTO :NEW.""Id"" FROM DUAL; END;", TriggerType = "BEFORE EACH ROW", }); var tableGen = new TableGenerator(table); //act var ddl = tableGen.Write(); //assert Assert.IsTrue(ddl.Contains("\"Id\" NUMBER (9) NOT NULL,"), "Table should include Id column " + ddl); //line breaks may cause environmental differences Assert.IsTrue(ddl.Contains(@"CREATE OR REPLACE TRIGGER ""Test_INS_TRG"""), "Table should include 'create trigger' " + ddl); Assert.IsTrue(ddl.Contains(@"SELECT ""Test_SEQ"".NEXTVAL INTO :NEW.""Id"" FROM DUAL;"), "Table should include trigger body " + ddl); }
public void TestNaturalKey() { //arrange var schema = new DatabaseSchema(null, null); var diagrams = schema.AddTable("Diagrams") .AddColumn("diagram_id", DbType.Int32).AddPrimaryKey() .AddColumn<string>("name").AddLength(10).AddUniqueKey() .AddColumn<int>("principal_id") .Table; diagrams.UniqueKeys.Single().AddColumn(diagrams.FindColumn("principal_id")); DatabaseSchemaFixer.UpdateReferences(schema); var settings = new CodeWriterSettings { Namespace = "MyTest", CodeTarget = CodeTarget.PocoNHibernateHbm }; PrepareSchemaNames.Prepare(schema, settings.Namer); //act var target = new MappingWriter(diagrams, settings); var txt = target.Write(); //assert var errors = Validate(txt); Assert.IsFalse(errors); }
public void TestCompositeKey() { //arrange var schema = new DatabaseSchema(null, null); var orderDetail = schema.AddTable("OrderDetails") .AddColumn("OrderID", DbType.Int32).AddPrimaryKey() .AddColumn("ProductID", DbType.Int32) .AddColumn<int>("UnitPrice") .Table; orderDetail.PrimaryKey.AddColumn(orderDetail.FindColumn("ProductID")); DatabaseSchemaFixer.UpdateReferences(schema); var settings = new CodeWriterSettings { Namespace = "MyTest", CodeTarget = CodeTarget.PocoNHibernateHbm }; PrepareSchemaNames.Prepare(schema, settings.Namer); //act var target = new MappingWriter(orderDetail, settings); var txt = target.Write(); //assert var errors = Validate(txt); Assert.IsFalse(errors); }
public void TestForeignKeysCrossSchema() { //arrange var schema = new DatabaseSchema(null, null); schema.AddTable("Target") .AddColumn<int>("Target_Id").AddPrimaryKey("TARGET_PK") .AddColumn<string>("Name").AddLength(10).AddUniqueKey("TARGET_UQ1") .AddTable("Source") .AddColumn<int>("Source_Id").AddPrimaryKey("SOURCE_PK") .AddColumn<int>("Target_Id"); var source = schema.FindTableByName("Source"); var target = schema.FindTableByName("Target"); target.SchemaOwner = "dbo"; source.SchemaOwner = "other"; var targetId = source.FindColumn("Target_Id"); targetId.AddForeignKey("SOURCE_FK", tables => target); //act var fk = source.ForeignKeys[0]; //assert Assert.AreEqual("Target", fk.RefersToTable, "Name of referenced table"); Assert.AreEqual(target, fk.ReferencedTable(schema), "Actual reference to table"); Assert.AreEqual(target.PrimaryKey.Columns, fk.ReferencedColumns(schema), "Columns are matched up"); }
public void TestGeneratedSqlForSelectAll() { //arrange var schema = new DatabaseSchema(null, SqlType.SqlServer); schema.AddTable("Category").AddColumn<int>("Id").AddPrimaryKey() .AddColumn<string>("FirstName").AddLength(10) .Table.SchemaOwner = "first"; schema.AddTable("Category").AddColumn<int>("Id").AddPrimaryKey() .AddColumn<string>("SecondName").AddLength(20) .Table.SchemaOwner = "second"; var table = schema.FindTableByName("Category"); //this will find one of them var writer = new SqlWriter(table, SqlType.SqlServer); //act var sql = writer.SelectAllSql(); //assert }
public void TestFindByName() { var schema = new DatabaseSchema(null, null); schema.AddTable("Orders") .AddTable("Products"); var table = schema.FindTableByName("products"); Assert.IsNotNull(table); Assert.AreEqual("Products", table.Name); }
public void TestUnicodeStringViaTableWithSchema() { var schema = new DatabaseSchema(null, "System.Data.OracleClient"); var table = schema.AddTable("Orders"); var mapper = DataTypeMappingFactory.DataTypeMapper(table); var dataType = mapper.Map(DbType.String); //assert Assert.AreEqual("NVARCHAR2", dataType); }
public void TestRiaServices() { //arrange var schema = new DatabaseSchema(null, null); schema.AddTable("Categories") .AddColumn("CategoryId", DbType.Int32).AddPrimaryKey() .AddColumn("CategoryName", DbType.String); schema.AddTable("Products") .AddColumn("ProductId", DbType.Int32).AddPrimaryKey() .AddColumn("ProductName", DbType.String) .AddColumn("CategoryId", DbType.Int32).AddForeignKey("fk", "Categories"); DatabaseSchemaFixer.UpdateReferences(schema); var directory = TestHelper.CreateDirectory("TestRiaServices"); const string @namespace = "MyTest"; var settings = new CodeWriterSettings { Namespace = @namespace, CodeTarget = CodeTarget.PocoRiaServices }; //act var target = new CodeWriter(schema, settings); target.Execute(directory); //assert var files = directory.GetFiles("*.cs"); var products = files.FirstOrDefault(f => f.Name == "Product.cs"); Assert.IsNotNull(products, "Should have written Product class to represent [Products] table"); var category = files.FirstOrDefault(f => f.Name == "Category.cs"); Assert.IsNotNull(category, "Should have written Category class to represent [Categories] table"); var cs = File.ReadAllText(category.FullName); var ok = cs.Contains("[MetadataType(typeof(Category.CategoryMetadata))]"); Assert.IsTrue(ok, "Should contain nested metadata class"); }
public void TestCompositeKeys() { //arrange var schema = new DatabaseSchema(null, null); schema.AddTable("Store") .AddColumn<int>("Store_Id").AddPrimaryKey("Store_PK") .AddColumn<string>("Name").AddLength(10) .AddTable("StoreSale") .AddColumn<int>("Store_Id").AddForeignKey("Store_FK", "Store") .AddColumn<int>("StoreSale_Id") .AddTable("StoreSaleDetail") .AddColumn<int>("Store_Id").AddForeignKey("Store_FK", "Store") .AddColumn<int>("StoreSale_Id") .AddColumn<int>("StoreSaleDetail_Id") ; var store = schema.FindTableByName("Store"); var storeSale = schema.FindTableByName("StoreSale"); var storeSaleDetail = schema.FindTableByName("StoreSaleDetail"); var pk1 = new DatabaseConstraint { ConstraintType = ConstraintType.PrimaryKey }; pk1.Columns.Add("Store_Id"); pk1.Columns.Add("StoreSale_Id"); storeSale.AddConstraint(pk1); var pk2 = new DatabaseConstraint { ConstraintType = ConstraintType.PrimaryKey }; pk2.Columns.Add("Store_Id"); pk2.Columns.Add("StoreSale_Id"); pk2.Columns.Add("StoreSaleDetail_Id"); storeSaleDetail.AddConstraint(pk2); var fk = new DatabaseConstraint { ConstraintType = ConstraintType.ForeignKey, RefersToTable = "StoreSale" }; fk.Columns.Add("Store_Id"); fk.Columns.Add("StoreSale_Id"); storeSaleDetail.AddConstraint(fk); //act DatabaseSchemaFixer.UpdateReferences(schema); //assert Assert.AreEqual(2, store.ForeignKeyChildren.Count, "Store is target of foreign keys from StoreSale and StoreSaleDetail"); Assert.AreEqual(1, storeSale.ForeignKeyChildren.Count, "StoreSale is target of foreign key from StoreSaleDetail"); var storeId = storeSaleDetail.FindColumn("Store_Id"); Assert.AreEqual(2, storeId.ForeignKeyTableNames.Count, "StoreSaleDetail.StoreId is fk to both Store and StoreSale"); var storeSaleId = storeSaleDetail.FindColumn("StoreSale_Id"); Assert.AreEqual(1, storeSaleId.ForeignKeyTableNames.Count, "StoreSaleDetail.StoreSale_Id is fk to StoreSale"); }
public void TestSqlServerTableWithIdentity() { //arrange var schema = new DatabaseSchema(null, SqlType.SqlServer); var table = schema.AddTable("Test") .AddColumn<int>("Id").AddIdentity() .AddColumn<string>("Name").AddLength(200) .Table; var tableGen = new TableGenerator(table); //act var ddl = tableGen.Write(); //assert Assert.IsTrue(ddl.Contains("[Id] INT IDENTITY(1,1) NOT NULL")); }
public void UseEqualityTest() { //NamedSchemaObject = has a name and schemaOwner var schema = new DatabaseSchema(null, null); schema.Owner = "dbo"; schema.AddTable("A").AddTable("A"); var distinct = schema.Tables.Distinct().Count(); Assert.AreEqual(1, distinct); //NamedObject = has a name var cols = new List<DatabaseColumn> {new DatabaseColumn {Name = "Id"}, new DatabaseColumn {Name = "Name"}}; var cols2 = new List<DatabaseColumn> { new DatabaseColumn { Name = "Id" }, new DatabaseColumn { Name = "Name" } }; var union = cols.Union(cols2); Assert.AreEqual(2, union.Count()); }
public void TestSqlServerConversionTableWithIdentity() { //arrange var schema = new DatabaseSchema(null, SqlType.SqlServer); var table = schema.AddTable("Test") .AddColumn<int>("Id").AddPrimaryKey().AddIdentity() .AddColumn<string>("Name").AddLength(200) .Table; var tableGen = new TableGenerator(table); //act var ddl = tableGen.Write(); //assert Assert.IsTrue(ddl.Contains("\"Id\" NUMBER (9) NOT NULL,")); Assert.IsTrue(ddl.Contains(@"CREATE OR REPLACE TRIGGER "), "Creates a trigger"); }
public void GivenDateTimeOffset() { //arrange var schema = new DatabaseSchema(null, SqlType.PostgreSql); schema .AddTable("Category") .AddColumn<int>("CategoryId").AddPrimaryKey() ; var table = schema.FindTableByName("Category"); //act var col = table.AddColumn("DateTimeOffset", typeof(DateTimeOffset)); //assert Assert.AreEqual("TIMESTAMP WITH TIME ZONE", col.DbDataType); }
public void GivenTimeSpan() { //arrange var schema = new DatabaseSchema(null, SqlType.PostgreSql); schema .AddTable("Category") .AddColumn<int>("CategoryId").AddPrimaryKey() ; var table = schema.FindTableByName("Category"); //act var col = table.AddColumn("Timespan", typeof(TimeSpan)); //assert Assert.AreEqual("INTERVAL", col.DbDataType); }
//One to one relationships are used for two main reasons: // * Divide a large table into smaller parts (Product - ProductDetail) // * Divide a table for security (or because it's updated frequently...) (User, UserPassword) private static DatabaseSchema Arrange() { var schema = new DatabaseSchema(null, null); schema.AddTable("Products") .AddColumn<int>("Id").AddPrimaryKey() .AddColumn<string>("Name") .AddTable("ProductDetails") .AddColumn<int>("Id").AddPrimaryKey().AddForeignKey("Products") .AddColumn<string>("Description"); DatabaseSchemaFixer.UpdateDataTypes(schema); //make sure .Net names are assigned PrepareSchemaNames.Prepare(schema, new Namer()); return schema; }
public void TestSqlServerTableWithDescription() { //arrange var schema = new DatabaseSchema(null, SqlType.SqlServer); var table = schema.AddTable("Test"); var id = table.AddColumn<int>("Id").AddPrimaryKey(); id.Description = "This is the primary key"; table.AddColumn<string>("Name").AddLength(200); var tableGen = new TableGenerator(table); //act var ddl = tableGen.Write(); //assert Assert.IsTrue(ddl.Contains("EXEC sys.sp_addextendedproperty")); Assert.IsTrue(ddl.Contains("'This is the primary key'")); }
public void TestSqlServerCeTableWithIdentity() { //arrange var schema = new DatabaseSchema(null, SqlType.SqlServerCe); var table = schema.AddTable("Test") .AddColumn<int>("Id").AddIdentity().AddPrimaryKey() .AddColumn<string>("Name").AddLength(200) .Table; var tableGen = new TableGenerator(table); //act var ddl = tableGen.Write(); //assert Assert.IsTrue(ddl.Contains("GO")); //batch separators Assert.IsFalse(ddl.Contains(";")); //valid but useless in SqlServer CE because you can't batch }
public void TestOracle12TableWithIdentityAutoNumber() { //arrange var schema = new DatabaseSchema(null, SqlType.Oracle); var table = schema.AddTable("Test") .AddColumn<int>("Id").AddPrimaryKey().AddIdentity() .AddColumn<string>("Name").AddLength(200) .Table; var tableGen = new TableGenerator(table); //acts var ddl = tableGen.Write(); //assert Assert.IsTrue(ddl.Contains("\"Id\" NUMBER (9) NOT NULL GENERATED AS IDENTITY")); Assert.IsFalse(ddl.Contains(@"CREATE OR REPLACE TRIGGER ")); }
public void PrimaryKeyTest() { var schema = new DatabaseSchema(null, null); schema .AddTable("Categories") .AddColumn("CategoryId", "INT").AddPrimaryKey() .AddColumn("CategoryName", "NVARCHAR").AddLength(50); //assert var cats = schema.FindTableByName("Categories"); var id = cats.PrimaryKeyColumn; Assert.IsNotNull(id); Assert.AreEqual("INT", id.DbDataType); Assert.AreEqual(true, id.IsPrimaryKey); Assert.AreEqual(false, id.Nullable); }