Exemplo n.º 1
0
        /// <summary>
        /// 加载指定数据库中的每个表的所有列
        /// </summary>
        /// <param name="database">需要加载列的数据库对象</param>
        protected override void LoadAllColumns(Database database)
        {
            foreach (Table table in database.Tables)
            {
                using (var columnsReader = this.Db.QueryDataReader(@"SHOW FULL COLUMNS FROM `" + table.Name + "`;"))
                {
                    while (columnsReader.Read())
                    {
                        string columnName = columnsReader["Field"].ToString();
                        string sqlType    = columnsReader["Type"].ToString();

                        DbType dbType = SQLiteDbTypeHelper.ConvertFromSQLiteTypeString(sqlType);
                        Column column = new Column(columnName, dbType, null, table);
                        column.IsRequired = string.Compare(columnsReader["Null"].ToString(), "Yes", true) != 0;

                        table.Columns.Add(column);
                    }
                    table.SortColumns();
                }
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// 生成更新备注信息
 /// </summary>
 /// <param name="op">更新备注的实体对象</param>
 protected override void Generate(UpdateComment op)
 {
     if (string.IsNullOrEmpty(op.ColumnName))
     {
         this.AddRun(new SqlMigrationRun
         {
             Sql = string.Format(@"ALTER TABLE `{0}` COMMENT '{1}';", this.Prepare(op.TableName), op.Comment)
         });
     }
     else
     {
         //SQLite 不支持外键修改备注,所以过滤掉外键修改备注
         if (string.Compare(op.ColumnName, "id", true) != 0 && string.Compare(op.TableName, "BlogUser") != 0)
         {
             this.AddRun(new SqlMigrationRun
             {
                 Sql = string.Format(@"ALTER TABLE `{0}` MODIFY COLUMN `{1}` {2} COMMENT '{3}';", this.Prepare(op.TableName), this.Prepare(op.ColumnName), SQLiteDbTypeHelper.ConvertToSQLiteTypeString(op.ColumnDataType), op.Comment)
             });
         }
     }
 }
Exemplo n.º 3
0
 /// <summary>
 /// 把Clr的数据类型转型为SQLite的数据类型
 /// </summary>
 /// <param name="dataType">数据类型</param>
 /// <param name="length">数据长度</param>
 /// <returns>返回SQLite的数据类型</returns>
 protected override string ConvertToTypeString(DbType dataType, string length)
 {
     return(SQLiteDbTypeHelper.ConvertToSQLiteTypeString(dataType, length));
 }