示例#1
0
        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());
        }
示例#2
0
        /// <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));
        }
示例#3
0
        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);
            }
        }
示例#4
0
        /// <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);
        }
示例#5
0
文件: Program.cs 项目: mr360/IMS
        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);
        }