Exemplo n.º 1
0
        public static void Up(Type targetType)
        {
            var map = Reflector.BuildMapFromType(targetType);

            if (TableExists(map.TableName))
            {
                return;
            }

            StringBuilder sql = new StringBuilder();

            sql.AppendFormat("CREATE TABLE \"{0}\"{1}", map.TableName, Environment.NewLine);
            sql.AppendLine("(");

            sql.AppendFormat("\t\"{0}\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, {1}",
                             map.PrimaryKey.ColumName, Environment.NewLine);

            for (int i = 0; i < map.Columns.Count; i++)
            {
                var token = map.Columns[i];

                string dbType = "TEXT";

                if (token.SourceType == typeof(Int16) ||
                    token.SourceType == typeof(Int32) ||
                    token.SourceType == typeof(Int64))
                {
                    dbType = "INTEGER";
                }

                sql.AppendFormat("\t\"{0}\" {1}{2}{3}",
                                 token.ColumName,
                                 dbType,
                                 i < map.Columns.Count - 1 ? "," : "",       // Skip comma for last column
                                 Environment.NewLine);
            }

            // Remove last comma
            sql.AppendLine(")");

            // Execute creation script for table
            ClientState.Current.DataService.ExecuteNonQuery(sql.ToString());
        }