代码自动生成工具MyGeneration之三

这篇博客介绍了如何利用代码生成工具MyGeneration中的MyMeta全局变量,将数据库信息显示到用户界面。通过查看MyMeta API Reference,可以方便地获取数据库、数据表等信息,并在Form加载时动态填充ComboBox和ListBox。当用户选择数据库和表后,能够获取选定的数据库名和表名。
摘要由CSDN通过智能技术生成

  接前面的文章继续。

  代码自动生成工具MyGeneration之二

  前面讲了MyGeneration的使用,以及如何自己写模板显示UI,现在开始讲如何将数据库的信息显示到UI上。
在MyGeneraion脚本系统中,有一个全局变量,叫做MyMeta,他是dbRoot类型的。通过这个全局变量,我们可以获得数据库相关的信息。这个变量在Interface Code 和Template Code中都可以使用。
  从上节代码来看,我们建立Form窗口的时候,就把这个变量给传给了Form窗口
  如下代码所示:
  MyForm form = new MyForm(MyMeta, input);
   那么dbRoot类型的MyMeta变量都有哪些功能,有哪些函数,属性可以使用呢?
我们可以查找帮助,通过MyGeneration菜单 “File – Help – MyMeta API Reference”可以打开其帮助,里面有dbRoot的详细介绍,如下图所示:



  大概看一下API,然后我们就可以修改我们的模板了,将其修改如下:

  1.         private void Form1_Load(object sender, EventArgs e)
  2.         {
  3.             //获取数据库,传给ComboBox
  4.             comboBox1.DataSource    = this.myMeta.Databases;
  5.             //ComboBox显示数据库名
  6.             this.comboBox1.DisplayMember = "Name";  
  7.             
  8.             if(this.myMeta.DefaultDatabase != null)
  9.             {
  10.                 //选中默认的数据库
  11.                 this.comboBox1.SelectedIndex = this.comboBox1.FindStringExact(this.myMeta.DefaultDatabase.Name);
  12.                 //通过IDatabase 的Tables属性取得数据库里面所有的数据表
  13.                 //作为数据源传给ListBox
  14.                 this.listBox1.DataSource = this.myMeta.DefaultDatabase.Tables;
  15.                 //ListBox显示数据表的名字
  16.                 this.listBox1.DisplayMember = "Name";
  17.             }   
  18.         }
  19.         

  就算没有注释,这代码也很好懂吧。
  呵呵,由此可见,我们可以通过MyMeta得到IDataBases,然后获得ITable,在通过ITable
获得数据表的信息……反正呢,照这条线找下去,基本上数据库里有哪些表,表里有哪些字段,有哪些存储过程,任何信息都可以很容易的得到。当然了,在自己写模板之前,最好先大概看一下“MyMeta API Reference”,这样就写模板就会更得心应手了。
  下面接下来看Form点击OK之后的代码吧

  1.          private void button1_Click(object sender, EventArgs e)
  2.         {
  3.             IDatabase database = this.comboBox1.SelectedValue as IDatabase;
  4.             ITable    table    = this.listBox1.SelectedValue as ITable;
  5.             
  6.             this.zeusInput["databaseName"] = database.Name;
  7.             this.zeusInput["tableName"]    = table.Name;
  8.             
  9.             this.DialogResult = DialogResult.OK;
  10.             this.Close();
  11.         }
  这段代码得重点讲一下了,因为Interface Code是关于UI的,那么UI执行完了之后,我们就需要用到Template Code了,那么Template Code和Interface Code是如何联系在一起的呢? 我们在Template Code里面如何知道Interface Code显示的UI中用户输入了什么,选择了什么?
  这用到了MyGeneration的一个非常重要的类IZeusInput。
  改接口的详细信息请看帮助 “File – help – Zeus API Reference”。
  在这里我们简单的把UI上选中的数据库的名字和数据表的名字存在了IZeusInput变量中。大家注意看下Form的IZeumInput是如何来的吧。
  这样,我们就完成了该模板的Interface Code的代码,最后形成的Interface Code就如下所示:

  1. <%#REFERENCE System.Windows.Forms.dll, System.Drawing.dll %>
  2. <%#NAMESPACE System.Windows.Forms, System.Drawing %>
  3. public class GeneratedGui : DotNetScriptGui
  4. {
  5.     public GeneratedGui(ZeusContext context) : base(context) {}</
MyGeneration 是一款不错的ORM和代码生成工具,它基于模板(Template)工作,安装好MyGeneration 后自带了很多模板,并且提供在线模板库提供模板升级和允许用户自定义模板。MyGeneration 的模板可以用C#, VB.NET, JScript, and VBScript编写。使用MyGeneration 可以为Gentle.NET, Opf3, NHibernate等生成ORM架构或ORM文件,为多种数据库生成存储过程,为.Net项目生成C#、VB.NET 程序代码,PHP、HTML等页面代码。 MyGeneration 具有以下的特性: 1.支持多种数据库 Microsoft SQLServer Oracle IBM DB2 Microsoft Access MySQL PostgreSQL Firebird Interbase SQLite VistaDB Advantage IBM iSeries CSV & other delimited text files 2.支持重用和include文件 3.Ability to single step through all templates regardless of language. (单步调试?) 4.支持为模板输入自定义用户界面,包括winForm程序。 5.提供cmd命令行工具(ZuesCmd.Exe)和GUI(Project)工具. 6.提供强大的原数据 API(MyMeta)访问你的数据库里的原数据。 7.提供Unicode、语法高亮、查找、替换等功能的强大文本编辑器。 8.支持插件(Intrinsic Objects)扩展模板的功能。 9.支持MyMeta meta-data providers插件 10.Dockable windows.(不懂) 11.提供动态的可重写的数据类型映射。从数据库类型到MyGeneration的数据提供者类型到代码类型。 12.支持用户自定义原数据。 13.支持表、字段名、参数等重命名。 14.可以使用Gentle.NET, Opf3, NHibernate的模板。 15.支持在线帮助、模板升级和论坛。 二、myGeneration里的文件 目录: Architectures\ Contains dOOdads and any other MyGeneration sponsered frameworks/architectures. GeneratedCode\ 默认生成代码的存放位置。 Settings\ 配置文件存放目录。配置文件是各种.xml文件。 Templates\ 默认模板存放目录。 可执行文件: MyGeneration.exe 打开window界面 ZeusCmd.exe 打开命令行界面 uninstall.exe 各种帮助文件: ~\.chm 各种数据库驱动文件: ~\.dll 配置文件: DockManager.Config Settings\DefaultSettings.xml 存放默认设置。 Settings\DbTargets.xml 存放数据库到数据提供者数据类型的映射配置 Settings\Languages.xml 存放数据提供者到目标语言的数据类型映射配置 Settings\ScintillaNET.xml 存放语法高亮显示的对应关系的设置信息。 Settings\ZeusConfig.xml 三、缺点 只支持单表,复杂的查询还要先写视图
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值