OrFlying For VB.NET 使用说明

本文介绍OrFlyingForVBNET工具的使用方法,包括登录系统、主界面操作及代码生成流程。支持根据SQL Server数据库自动生成VB.NET代码,涵盖类、集合、引擎等模块,并提供实例演示。

说明:OrFlying For VBNET 目前只能根据SQL Server的数据库自动产生代码。

 

1登录系统

<shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><stroke joinstyle="miter"></stroke><formulas><f eqn="if lineDrawn pixelLineWidth 0"></f><f eqn="sum @0 1 0"></f><f eqn="sum 0 0 @1"></f><f eqn="prod @2 1 2"></f><f eqn="prod @3 21600 pixelWidth"></f><f eqn="prod @3 21600 pixelHeight"></f><f eqn="sum @0 0 1"></f><f eqn="prod @6 1 2"></f><f eqn="prod @7 21600 pixelWidth"></f><f eqn="sum @8 21600 0"></f><f eqn="prod @7 21600 pixelHeight"></f><f eqn="sum @10 21600 0"></f></formulas><path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></path><lock aspectratio="t" v:ext="edit"></lock></shapetype><shape id="_x0000_i1025" style="WIDTH: 219.75pt; HEIGHT: 166.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image001.png"></imagedata></shape>

l帐号密码为登录SQL数据库的用户名和密码

l服务器为SQLServer2k的服务器名称或者IP地址

l数据库为指定的数据库的名称,对大小写敏感。

2主界面

<shape id="_x0000_i1026" style="WIDTH: 414.75pt; HEIGHT: 311.25pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image003.png"><font size="3"></font></imagedata></shape>

界面解释:

l菜单

n保存配置,系统自动把转换配置保存到本地的XML文件AgileSoftEccConfig.xml

n保存代码,把自动产生的代码文件保存到选择的目录中。其中关于缓冲类的代码如果为选择为新的VB.NET,则自动生成两个文件,并且保存。如果没有选择需要如上图所示选择现存的两个文件,系统将部分代码自动插入到这两个文件中去。

缓冲集的管理为工程级共享,即在工程内部缓存。刷新的时候需要调用CCacheManage.ReleaseAllCache() 清除缓存。

n产生代码根据当前的配置信息产生代码,分别在后面的五个Tab页面中显示。可以手工复制粘贴。

n退出系统退出系统

l对象列表主要来源于两个源头,以表明成为唯一标示

n数据库,对于当前XML文件中没有配置信息的对象,读取数据库取出相应的字段信息。

n配置文件AgileSoftEccConfig.xml 对于已经产生过代码和保存过的配置信息,从XML文件中读取,并且显示。可以进行编辑。

n注意:数据库的同步功能没有做,也就是说你在变更数据结构后,需要手工保持数据结构和代码转换配置的对应关系。然后在生成代码。

l代码转换配置

n对象名称内部定义的对象名称,唯一标示,如定义为XXX,则将产生CClsXXX CColXXX CEngXXX 等三个文件,并且内部类的名称也如此。

n对象关键字本方案默认所有的系统均有关键字,并且为整形类型 bigint 由代码自动维护而不是数据库的自增量。并且表中的关系最好通过本字段关联。

n关于缓冲剂的代码

u新建vb.net工程,将产生完整的声明文件:MdlEccCache.cls 和管理文件: CCacheManage.cls

u不选择,双击文本框选择现有的文件,则把部分缓冲集的代码插入上述两个文件中。

n对象属性信息手工维护对象的属性

<shape id="_x0000_i1027" style="WIDTH: 230.25pt; HEIGHT: 195pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image005.png"><font size="3"></font></imagedata></shape>

u属性类型

l数据库关联该属性将自动和数据库中对应的字段数据同步,即读取和写入

l变量独立的属性和数据库无关

l实体关联的对象实体如下图所示定义一个关联对象:

<shape id="_x0000_i1028" style="WIDTH: 228.75pt; HEIGHT: 193.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image007.png"><font size="3"></font></imagedata></shape>

ü属性名称和对应字段最好以Cls开头表示为独立的一个对象,例如班级的班主任关联对象ClsClass.ClsTeacher

ü数据类型为当前系统中已经产生的基本类类型

ü关联对象为代码转换配置中定义的对象名称

ü关联条件:这里填写当前类中关联字段的名称即可如:Class中有关联Teacher表中的TeacherUID字段,则这里的关联条件写TeacherUID

 

l实体集合如下图:

<shape id="_x0000_i1029" style="WIDTH: 228.75pt; HEIGHT: 193.5pt" type="#_x0000_t75"><imagedata o:title="" src="file:///C:/DOCUME~1/ADMINI~1/LOCALS~1/Temp/msohtml1/01/clip_image009.png"><font size="3"></font></imagedata></shape>

ü属性名称和对应字段最好以Col开头表示为独立的一个对象,例如班级的学生关联对象ClsClass.ColStudents

ü数据类型为当前系统中已经产生的集合类类型

ü关联对象为代码转换配置中定义的对象名称

ü关联条件:注意这里要写的是关联的SQL语句片段,主要是条件如:对于Class类的ColStudents ,如:

uClassUID=<%ClassUID%> <%ClassUID%>为关联条件,ClassUIDClass类中的ClassUID对应的属性名称,= 号前面的ClassUIDStudent表中的关联Class的字段

uClassUID in (Select ClassUID from Class where grade=’二年级’) 固定条件

uNodeTypeUID in (Select Distinct NodeTypeUID from ADP_SysTreeNode Where TreeUID=<%TreeUID%>)

uParentLayerName='Root' and TreeUID=<%TreeUID%>

 

l基本类代码产生的基本类代码

l集合类代码产生的集合类代码

l引擎类代码产生的引擎类代码

l缓存声明代码产生的缓存声明代码

l缓存管理代码产生的缓存管理代码

 

3OrFlying Ecc代码的使用

 

需要引用AgileSoft.CGlbDll.dll

附录会附上相关的数据处理的部分源代码

 

l获取对象:

Dim xClsStudent as CClsStudent

If not CEngStudent. GetClsStudentByKey(xClsStudent, 102) then

错误信息

Endif

Msgbox xClsStudent.Name

如果student对象关联了课程集合类CColCase

则可以直接访问:

Dim xCase as CClsCase

For each xCase in xClsStudent.ColCase

Msgbox xCase.name‘显示课程名称

Next

 

l插入对象

Dim xClsStudent as new CClsStudent

xClsStudent.IsNew=true

xClsStudent.Name=’张三

….属性赋值

If not CEngUpdateStudent(xClsStudent) then

错误信息

endif

 

l删除对象

Dim xClsStudent as CClsStudent

If not CEngStudent. GetClsStudentByKey (xClsStudent, 102) then

错误信息

Endif

 

xClsStudent.IsDel=true

If not CEngUpdateStudent(xClsStudent) then

错误信息

endif

l修改对象

Dim xClsStudent as CClsStudent

If not CEngStudent. GetClsStudentByKey (xClsStudent, 102) then

错误信息

Endif

xClsStudent.Name=’张三<chmetcnv w:st="on" tcsc="0" numbertype="1" negative="False" hasspace="False" sourcevalue="123" unitname="’"><span lang="EN-US"><font face="Times New Roman">123’</font></span></chmetcnv>

xClsStudent.IsDirty=true

If not CEngUpdateStudent(xClsStudent) then

错误信息

endif

 

l更新集合对象

Dim xColStudent as CColStudent

If not CEngStudent. GetColStudentBySQL(xColStudent) then‘不传入条件返回所有对象

 

Endif

删除第一个对象

xColStudent(1).IsDel=true

修改第二个对象

xColStudent(2).Name=”xxx”

xColStudent(2).IsDirty=true

插入新对象

Dim xClsStudent as new CClsStudent

xClsStudent.IsNew=true

xClsStudent.Name=’张三

xColStudent.Add(xClsStudent)

更新数据库

If not CEngStudent.UpdateCol(xColStudent) then

 

endif

 

 

原来一直从事企业管理软件的开发,经常苦恼于信息系统的开发困难。后来,公司产品要往面向对象方面转,希望能够通过新技术的应用,提高开发效率。不经意地发现了微软站点的一篇文章: 《Engine-Collection-Class,一种用来建立可重用企业组件的设计模式》。刚好,公司主要采用VB语言。经过仔细研读,不禁喜出望外。 经过短时间的验证、修改和使用,最终确定了公司采用这种模式作为对象层的开发模式。确定了所有和数据库交互的业务对象全部采用这种模式封装,并且统一调用。由此,也走上了长达六年的摸索之路。 实际编写中发现,大量的类的创建过程都是在根据一个模板拷贝粘贴。于是开发一个类生成工具的想法自然而然的就出现了。开始的方法是通过Rose的VB代码生成模板创建,建立VB代码模板,然后通过Rose建立模型,通过Sterotype关联到我们的模板类,然后自动产生代码。效果不错,不过Rose仅仅生成代码框架,仍然需要大量手工操作。于是决定写一个独立的代码工具,来自动产生所有的代码。经过不断的模式和改进,一个简单实用的工具问世了。命名为:OrFlying ! 随着时间的进步,VB逐步淡出主力开发语言的阵营。我也转向了.net/j2ee的方向,使用vb.net ado.net重新定义ECC模式和编写ECC代码生成器的想法,一直在我心头。终于在2003年第一次写下了第一行代码,到目前为止,该方法已经经过我长时间的使用,基本稳定。 不敢说能够解决所有OR中的问题,但是能解决大量代码工作量我已经很知足了 期间,研究过hibernate JDO 等,仍然继续了OrFlying的工作,我想它的存在总是有其价值所在。我主要看重两点: 1 全部代码是生成的,和数据库的访问全部由具体的代码,而没有后台通用的组件和层次,当然也注定了其应用面的狭窄; 2 这样产生的对象层,通过 . 可以一级一级的不断出现提示,这个特点是我非常喜欢的,也就是所谓的对象形式化吧。不知道理解对不对
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值