首页 > 代码库 > CodeSmith7连接Mysql

CodeSmith7连接Mysql

由于CodeSmith连接MySql的dll有点小Bug,无法获取表和列的描述信息,所以,需要重新修改驱动程序。

技术分享

如上图所示,CodeSmith的mysql驱动是无法获取表和列的描述。所以我们需要重新修改MySQLSchemaProvide。步骤如下:

  1. 按照路径,打开项目。技术分享
  2. 注意需要重新引入dll。技术分享
  3. 打开mysql客户端程序,先查看表结构和列结构.技术分享技术分享
  4. 打开项目,修改代码,关键代码如下:技术分享
  5. 上面是增加了表的描述列,方法的下面是表的描述,原有内容为:
    if (schemaObject is TableSchema)            {                TableSchema tableSchema = schemaObject as TableSchema;                string commandText = string.Format(@"SHOW CREATE TABLE `{0}`.`{1}`", tableSchema.Database.Name, tableSchema.Name);                using (DbConnection connection = CreateConnection(connectionString))                {                    connection.Open();                    DbCommand command = connection.CreateCommand();                    command.CommandText = commandText;                    command.Connection = connection;                    using (IDataReader reader = command.ExecuteReader(CommandBehavior.CloseConnection))                    {                        while (reader.Read())                        {                            string createtable = reader.GetString(1);                            extendedProperties.Add(new ExtendedProperty("CS_CreateTableScript", createtable, DbType.String));                        }                        if (!reader.IsClosed)                            reader.Close();                    }                    if (connection.State != ConnectionState.Closed)                        connection.Close();                }            }
  6. 将上面的sql语句修改为Select TABLE_NAME,TABLE_COMMENT From information_schema.`TABLES` where TABLE_SCHEMA=‘{0}‘ and TABLE_NAME=‘{1}‘。并且将extendedProperties.Add(new ExtendedProperty("CS_CreateTableScript", createtable, DbType.String));修改为 extendedProperties.Add(new ExtendedProperty("CS_Description", createtable, DbType.String));
  7. 重新编译后,将编译后的dll组件替换codeSmith7里面的dll。路径如图技术分享
  8. 最终效果图技术分享

若需要完成的dll,可以留下邮件地址。抽空可以发送完成的dll给大家。

CodeSmith7连接Mysql