public void Model_GenerateCreateTableSql_permanent_table() { var temp = new TempModel(); DbTable <TempModel> .Create(temp, new Mock <DbSession>().Object, "Test"); var sqlBuilder = new IndentedStringBuilder(); temp.GenerateCreateTableSql(sqlBuilder, SqlVersion.Sql13, false); var expectedSql = @"CREATE TABLE [Test] ( [Id] INT NOT NULL, [Name] NVARCHAR(4000) NULL DEFAULT(N'DEFAULT NAME'), [Unique1] INT NULL, [Unique2] INT NULL CONSTRAINT [PK_Test] PRIMARY KEY CLUSTERED ([Id]), CONSTRAINT [UQ_Temp] UNIQUE NONCLUSTERED ([Unique1], [Unique2] DESC), CONSTRAINT [CK_Temp] CHECK ([Name] IS NOT NULL), FOREIGN KEY ([Unique1]) REFERENCES [Test] ([Id]) ON DELETE NO ACTION ON UPDATE NO ACTION ); "; Assert.AreEqual(expectedSql, sqlBuilder.ToString()); }
/// <summary> /// Creates DbTable object. /// </summary> /// <typeparam name="T">Type of model.</typeparam> /// <param name="model">The model reference.</param> /// <param name="dbSession">The database session.</param> /// <param name="name">The name of the table.</param> /// <returns>The created DbTable object.</returns> public static DbTable <T> CreateDbTable <T>(this T model, DbSession dbSession, string name) where T : Model, new() { model.VerifyNotNull(nameof(model)); dbSession.VerifyNotNull(nameof(dbSession)); name.VerifyNotNull(nameof(name)); var result = model.DataSource as DbTable <T>; return(result ?? DbTable <T> .Create(model, dbSession, name)); }
public void DefaultValueAttribute_sql_generation() { using (var testDb = new TestDb(SqlVersion.Sql13)) { var command = testDb.GetCreateTableCommand(DbTable <TestModel> .Create(new TestModel(), testDb, nameof(TestDb.TestTable))._, false); var expectedSql = @"CREATE TABLE [TestTable] ( [Int] INT NULL DEFAULT(5), [WeekDay] TINYINT NULL DEFAULT(1), [Status] CHAR(1) NULL DEFAULT('I') ); "; Assert.AreEqual(expectedSql, command.CommandText); } }
/// <summary> /// Gets the DbTable object. /// </summary> /// <typeparam name="T">Model type of the table.</typeparam> /// <param name="cachedValue">The reference of cached value.</param> /// <param name="name">The name of the database table.</param> /// <returns>The DbTable object.</returns> protected DbTable <T> GetTable <T>(ref DbTable <T> cachedValue, [CallerMemberName] string name = null) where T : Model, new() { if (Generator != null) { return(Generator.GetTable <T>(name)); } if (cachedValue == null) { name.VerifyNotEmpty(nameof(name)); var model = new T(); cachedValue = DbTable <T> .Create(model, this, name, DbTablePropertyAttribute.WireupAttributes); } return(cachedValue); }
static Database FakeData(int amount) { // Database Database.Create("HTV Database"); Database db = Database.Instance; // DbTable DbTable dbTableBay = new DbTable("bay", "Bay Table"); DbTable dbTableVehicle = new DbTable("vehicle", "Vehicle Table"); DbTable dbTableAddon = new DbTable("addon", "Addon Table"); DbTable dbTableUser = new DbTable("user", "User Table"); DbTable dbTableInvoice = new DbTable("invoice", "Invoice Table"); DbTable dbTableReport = new DbTable("report", "Report Table"); // Bays for (int i = 0; i < amount; i++) { Bay x = new Bay("B000" + (i.ToString())); if (i < amount / 2) { x.Vehicle = "VIN0000" + (i.ToString()); } dbTableBay.Create(x); } // Vehicle string chars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"; for (int i = 0; i < amount; i++) { string model = (chars[new Random().Next(chars.Length)] + chars[new Random().Next(chars.Length)] + chars[new Random().Next(chars.Length)] + chars[new Random().Next(chars.Length)]).ToString(); Vehicle x = new Vehicle("VIN0000" + (i.ToString()), (Brand) new Random().Next(0, 11), model, new DateTime(new Random().Next(1990, 2019), 01, 01), new Random().Next(30000, 150000)); if (i < amount / 3) { x.Sold = true; } dbTableVehicle.Create(x); } // Addon for (int i = 0; i < amount; i++) { Addon a = new Addon("A000" + (i.ToString()), "AddonTA10" + (i.ToString()), "Addon is xyz blah", new Random().Next(100, 3500)); a.Compatible = "VIN0000" + (i.ToString()); dbTableAddon.Create(a); Addon b = new Addon("A100" + (i.ToString()), "AddonTB10" + (i.ToString()), "Addon is xyz blah", new Random().Next(100, 3500)); b.Compatible = "VIN0000" + (i.ToString()); dbTableAddon.Create(b); Addon c = new Addon("A200" + (i.ToString()), "AddonTC10" + (i.ToString()), "Addon is xyz blah", new Random().Next(100, 3500)); c.Compatible = "VIN0000" + (i.ToString()); dbTableAddon.Create(c); } // Users for (int i = 0; i < amount; i++) { string name = (chars[new Random().Next(chars.Length)] + chars[new Random().Next(chars.Length)] + chars[new Random().Next(chars.Length)] + chars[new Random().Next(chars.Length)]).ToString(); Customer c = new Customer("C00" + (i.ToString()), "Customer Name", "25 Makaby Street, VIC, 3752", "0418534687"); dbTableUser.Create(c); } Staff s1 = new Staff("S10", "Example Name", JobRole.Sale); Staff s2 = new Staff("S20", "Example Name", JobRole.Accounting); Staff s3 = new Staff("S30", "Example Name", JobRole.Management); Staff s4 = new Staff("S40", "Example Name", JobRole.Garage); dbTableUser.Create(s1); dbTableUser.Create(s2); dbTableUser.Create(s3); dbTableUser.Create(s4); IMS.Builder.InvoiceBuilder iBuild = new IMS.Builder.InvoiceBuilder(); Order z; z.addons = new List <Addon>() { new Addon("A00001", "AddonTA10", "Addon is xyz blah", 5600.00) }; z.buyVehicle = new Vehicle("VIN00001", Brand.Audi, "MN-67", new DateTime(new Random().Next(1990, 2019), 01, 01), new Random().Next(30000, 150000)); z.tradeVehicle = null; iBuild.Order = z; iBuild.Staff = new Staff("SR689", "Example Staff", JobRole.Sale); IMS.Invoice.Sale iSale = iBuild.Prepare() as IMS.Invoice.Sale; dbTableInvoice.Create(iSale); InvoiceReport dd = new InvoiceReport("R006", "Test Report Name", ReportType.Sale, new DateTime(2019, 01, 01), new DateTime(2019, 04, 01)); dd.AmountOfSale = 60; dd.TotalSalePrice = 176500.00; dbTableReport.Create(dd); db.Create(dbTableBay); db.Create(dbTableVehicle); db.Create(dbTableAddon); db.Create(dbTableUser); db.Create(dbTableInvoice); db.Create(dbTableReport); return(db); }