示例#1
0
        public void ExtensionExecuteSqlShouldInsert()
        {
            FileInfo      inputFile = new FileInfo("c:\\BamTestData\\Db_SillydatabaseNameMap_NormalizEDOnTypes.json");
            SchemaNameMap map       = SchemaNameMap.Load(inputFile.FullName);
            Database      db        = GetDatabase();

            "INSERT INTO {Customer} ({FirstName}, {LastName}, {Birthday}, {Age}) VALUES (@FirstName, @LastName, @Birthday, @Age)"
            .NamedFormat(new
            {
                Customer  = map.GetTableName("Customer"),
                FirstName = map.GetColumnName("Customer", "FirstName"),
                LastName  = map.GetColumnName("Customer", "LastName"),
                Birthday  = map.GetColumnName("Customer", "Birthday"),
                Age       = map.GetColumnName("Customer", "Age")
            })
            .ExecuteSql(db, new Dictionary <string, object>
            {
                { "FirstName", "Yan" },
                { "LastName", "Ipa" },
                { "Birthday", new DateTime(1976, 11, 1) },
                { "Age", 39 }
            });

            DynamicDatabase ddb         = new DynamicDatabase(db, map);
            var             queryFilter = new
            {
                From  = "Customer",
                Where = new
                {
                    FirstName = "Yan",
                    And       = new
                    {
                        LastName = "Ipa"
                    }
                }
            };
            IEnumerable <dynamic> results = ddb.Retrieve(queryFilter);

            Expect.IsTrue(results.Count() > 0);
            results.Each(d =>
            {
                Type type = d.GetType();
                PropertyInfo[] properties = type.GetProperties();
                properties.Each(prop =>
                {
                    OutLineFormat("{0}: {1}", ConsoleColor.DarkCyan, prop.Name, prop.GetValue(d));
                });
            });
            ddb.Delete(queryFilter);
            results = ddb.Retrieve(queryFilter);
            Expect.AreEqual(0, results.Count());
        }