代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持

来源:互联网 发布:sql查询语句大全讲解 编辑:程序博客网 时间:2024/06/05 03:47

NCodeGenerate 支持多种数据库,目前系统支持 MySql,SqlServer ,Oracle 。 MySql和SqlServer 是系统自带的。Oracle 数据库的支持是有博友 @查小广提供的,非常感谢。

  NCodeGenerate 对各种数据库的支持是通过插件动态加载的。各种数据库的支持放在程序目录下的子目录 SchemaProviders 下面。

  要实现对其他数据库的支持很简单。只要实现两个接口就可以了。这两个接口是:IDbSchemaProvider,IDbConnectionStringEditor。

     第一个接口 IDbSchemaProvider 只要提供获取数据库结构的能力,是必须实现的。

using System; using System.Data; namespace NCodeGenerate.DBSchema {     /// <summary>     /// IDbSchemaProvider     /// </summary>     public interface IDbSchemaProvider     {         /// <summary>         /// 名称         /// </summary>         string Name         {             get;         }         /// <summary>         /// 描述         /// </summary>         string Description         {             get;         }         /// <summary>         /// 获取数据库名称         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <returns>数据库名称</returns>         string GetDatabaseName(string connectionString);         /// <summary>         /// 获取数据库扩展属性         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="schemaObject">schemaObject</param>         /// <returns>扩展属性数组</returns>         ExtendedProperty[] GetExtendedProperties(string connectionString, SchemaObjectBase schemaObject);         /// <summary>         /// 设置扩展属性         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="schemaObject">schemaObject</param>         void SetExtendedProperties(string connectionString, SchemaObjectBase schemaObject);         /// <summary>         /// 获取表结构数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="database">database</param>         /// <returns>表结构数组</returns>         TableSchema[] GetTables(string connectionString, DatabaseSchema database);         /// <summary>         /// 获取表列数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="table">table</param>         /// <returns>表列数组</returns>         ColumnSchema[] GetTableColumns(string connectionString, TableSchema table);         /// <summary>         /// 获取视图结构数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="database">database</param>         /// <returns>视图结构数组</returns>         ViewSchema[] GetViews(string connectionString, DatabaseSchema database);         /// <summary>         /// 获取视图列数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="view">view</param>         /// <returns>视图列数组</returns>         ViewColumnSchema[] GetViewColumns(string connectionString, ViewSchema view);         /// <summary>         /// 获取视图文本         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="view">view</param>         /// <returns>视图文本</returns>         string GetViewText(string connectionString, ViewSchema view);         /// <summary>         /// 获取表主键         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="table">table</param>         /// <returns>表主键</returns>         PrimaryKeySchema GetTablePrimaryKey(string connectionString, TableSchema table);         /// <summary>         /// 获取表键数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="table">table</param>         /// <returns>表键数组</returns>         TableKeySchema[] GetTableKeys(string connectionString, TableSchema table);         /// <summary>         /// 获取索引数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="table">table</param>         /// <returns>索引数组</returns>         IndexSchema[] GetTableIndexes(string connectionString, TableSchema table);         /// <summary>         /// 获取表数据         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="table">table</param>         /// <returns>表数据</returns>         DataTable GetTableData(string connectionString, TableSchema table);         /// <summary>         /// 获取视图数据         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="view">view</param>         /// <returns>视图数据</returns>         DataTable GetViewData(string connectionString, ViewSchema view);         /// <summary>         /// 获取命令数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="database">database</param>         /// <returns>命令数组</returns>         CommandSchema[] GetCommands(string connectionString, DatabaseSchema database);         /// <summary>         /// 获取命令参数数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="command">command</param>         /// <returns>命令参数数组</returns>         ParameterSchema[] GetCommandParameters(string connectionString, CommandSchema command);         /// <summary>         /// 获取命令文本         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="command">command</param>         /// <returns>命令文本</returns>         string GetCommandText(string connectionString, CommandSchema command);         /// <summary>         /// 获取命令结果数组         /// </summary>         /// <param name="connectionString">connectionString</param>         /// <param name="command">command</param>         /// <returns>命令结果数组</returns>         CommandResultSchema[] GetCommandResultSchemas(string connectionString, CommandSchema command);         /// <summary>         /// 测试连接         /// </summary>         /// <param name="ConnectionString">ConnectionString</param>         /// <param name="Error">错误文本</param>         /// <returns>bool</returns>         bool TestConnection(string ConnectionString,out string Error);     } }

第二个接口  IDbConnectionStringEditor ,给NCodeGenerate 提供一个编辑连接字符串的功能。

using System; namespace NCodeGenerate.DBSchema {     public interface IDbConnectionStringEditor     {         string ConnectionString         {             get;         }         bool EditorAvailable         {             get;         }         bool ShowEditor(string currentConnectionString);     } }

这个接口非常简单,只有两个属性,一个方法需要实现。

ConnectionString 返回编辑好的连接字符串。 EditorAvailable 返回是否实现了编辑界面 ,如果实现了返回 true,就可以了。 ShowEditor,传入 连接字符串,调用编辑界面,如果编辑界面点击确定就返回 true,否则返回 false。

 下面附上 MySql 的实现供大家参考,也欢迎网友实现其他的数据库。

下载地址为:http://download.csdn.net/detail/ncodegenerate/4958237

 

一、代码生成利器-NCodeGenerate 是什么?
二、代码生成利器-NCodeGenerate 教程(1) 遍历数据库内的所有表
三、代码生成利器-NCodeGenerate 教程(2) NCodeGenerate的代码公用之一
四、代码生成利器-NCodeGenerate 教程(3) 生成代码到文件.
五、 
代码生成利器-NCodeGenerate 教程(4) CodeSmith模板转换
六、代码生成利器-NCodeGenerate 教程(5) 多种数据库的支持

七、代码生成利器-NCodeGenerate 教程(6) 调试功能 Trace 输出

八、代码生成利器-NCodeGenerate 教程(7) 揭开调试功能 的神秘面纱
九、代码生成利器-NCodeGenerate 教程(8) 揭开Razor模板引擎的神秘面纱
十、代码生成利器-NCodeGenerate 教程(9) 数据类型映射Map功能




原创粉丝点击