开篇
AgileEAS.NET平台做为一个快速应用开发平台,其目的为是为了提高应用软件的生产效率,如何软件开发的生产效率,方法是多种多样的;使用工作简化开发中低技术重复工作可以是一种行之有效的途径。
目前该平台提供的ORM设计器不仅具有数据库设计的功能,目前还不支持图形化的设计实现,目前支持生成数据库设计文档,生成代码,生成解决方案工程,生成平台的接口层与实体层,数据访问层等。并且设计的模型采用XML存储的方式可以简易的实现双向工程,简单的理解就是可以从代码生成模型,也可以从模型生成代码。
使用说明
我想具体的软件使用大家基本上都会,具体流程如下:
进入到主页面如下,鼠标在实体上点击右键,新建实体的意思,顾名思义,熟悉ORM的开发者都比较了解的内容,实体即是对应数据库中的一条行记录,这里的意思就是对表结构的设计。
新建一个实体后,可以在右侧主模型中的设计页面中
名称:代表生成代码中的实体的名称,如果什么都不输入的话,默认情况下是把表名作为实体的名称。
数据表:代表数据库中该表的名称。必须输入。
中文说明:是数据库表的描述。
我们现在可以什么字段都不输入,然后点击文件,选择另存为,我们可以看到保存的文件扩展名为(.sdm)实际上是XML数据格式的文件。打开看看都是什么内容。为了更深刻的理解Model文件中的存储形式,我设计一个列
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Name="Project1" Caption="" Namespace="" OutPutFolder="" Language="C#" DatabaseType="SQL2000" DbServer="" DbUser="" DbPassword="" DbName="" Interface="true">
<Tables>
<Table>
<Directory />
<ClassName>entityName</ClassName>
<Caption>表的描述。</Caption>
<NameSpace />
<MapTable>TableName</MapTable>
<Columns>
<Column>
<Name>IDN</Name>
<Type>int</Type>
<Caption>IDN</Caption>
<ColumnName>IDN</ColumnName>
<DbType>INT</DbType>
<Size>0</Size>
<Scale>0</Scale>
<PrimaryKey>true</PrimaryKey>
<NotNull>true</NotNull>
<Comment />
</Column>
</Columns>
</Table>
</Tables>
<Models>
<Model>
<Name>主模型</Name>
<Buffer><?xml version="1.0" encoding="us-ascii"?><NML xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Version>2.2.3328.30433</Version><Graph><GraphInformation><Description /><Author /><CreationDate>2010/9/8 5:42:03</CreationDate><Subject /><Title /></GraphInformation></Graph></NML></Buffer>
</Model>
</Models>
<Directorys />
</Project>
通过上面的XML文档我们基本上可以看出来具体的存储方式,及如何通过这个文件链接到其他的数据库上进行相应的生成脚本等等之类的工作。
使用文件菜单组中的功能,我们可以快速创建和保存一个实体设计内容。
使用工具菜单组中从数据库生成是指通过ORM设计工具,将数据库中的某个数据表,自动生成与数据表对应的sdm文件。而通过sdm文件可以生成创建表的脚本,也可以通过ORM工具来自动完成表的创建,这些工程都是可以相互转换的。
还包括生成数据库脚本,ORM代码,解决方案,生成DOC,HTML等等多格式的生成。
选择数据库链接方式后[目前支持SQL2000,SQL2005/2008,ORACLE]
通过配置相应的数据库链接信息,ORM设计器工具自动读取系统中的表,只需要选择后即可生成相应的与数据库表对应的实体模型。
配置好数据库链接后出现如下界面
这里ORM设计器加载的是数据库中的用户,按照用户把不同表进行划分,例如我们现在选中dbo,则右侧列表中显示该用户下的所有表。
另外ORM设计器为了提供快速的生成,设置了全选功能,则可以一次性生成你选中的表的所有实体模型,为生成实体模型代码做准备。
ORM设计器生成的实体代码都是基于实体模型来生成的,所以说,如果是想从数据库中生成相应的实体代码,必须先生成该数据表对应的实体模型,然后通过ORM工具的生成代码即可。
点击生产后,ORM设计器自动生成相应的sdm文件,并且把数据库中的列与实体列一一对应,数据类型长度之类都进行了默认的转化。
有了实体模型后,我们就可以来生成相应的脚本,代码文件,DOC数据库设计文档,等等
生成数据脚本
通过浏览指定路径和文件名来生成,或者直接生成,当然直接点击生成的时候必须先配置默认的生成路径,这点很重要。
生成脚本文件的格式如下:
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'TABLENAME') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE TABLENAME
GO
CREATE TABLE TABLENAME (
IDN INT
)
GO
ALTER TABLE TABLENAME ADD
CONSTRAINT PK_TABLENAME PRIMARY KEY CLUSTERED
(
IDN
)
GO
DECLARE @V SQL_VARIANT
SET @V = N'表的描述。'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'TABLENAME', NULL, NULL
GO
DECLARE @V SQL_VARIANT
SET @V = N'IDN'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'TABLENAME', N'COLUMN', N'IDN'
GO
IF EXISTS (SELECT * FROM DBO.SYSOBJECTS WHERE ID = OBJECT_ID(N'DBO.ES_DELIVERCOMPANY') AND OBJECTPROPERTY(ID, N'ISUSERTABLE') = 1)
DROP TABLE DBO.ES_DELIVERCOMPANY
GO
CREATE TABLE DBO.ES_DELIVERCOMPANY (
ES_ID INT ,
ES_NAME VARCHAR(20) ,
ES_FULLNAME VARCHAR(50) ,
ES_ADDRESS VARCHAR(200) ,
ES_PHONE VARCHAR(15) ,
ES_PERSON VARCHAR(20) ,
ES_SORT INT ,
ES_FAX VARCHAR(20) ,
ES_URL VARCHAR(100) ,
ES_UID INT ,
ES_EXTEND1 VARCHAR(1000) ,
ES_EXTEND2 VARCHAR(1000)
)
GO
ALTER TABLE DBO.ES_DELIVERCOMPANY ADD
CONSTRAINT PK_DBO_ES_DELIVERCOMPANY PRIMARY KEY CLUSTERED
(
ES_ID
)
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_DELIVERCOMPANY'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', NULL, NULL
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_ID'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_ID'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_NAME'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_NAME'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_FULLNAME'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_FULLNAME'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_ADDRESS'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_ADDRESS'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_PHONE'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_PHONE'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_PERSON'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_PERSON'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_SORT'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_SORT'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_FAX'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_FAX'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_URL'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_URL'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_UID'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_UID'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_EXTEND1'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_EXTEND1'
GO
DECLARE @V SQL_VARIANT
SET @V = N'ES_EXTEND2'
EXECUTE SP_ADDEXTENDEDPROPERTY N'MS_DESCRIPTION', @V, N'USER', N'DBO', N'TABLE', N'ES_DELIVERCOMPANY', N'COLUMN', N'ES_EXTEND2'
GO
生成路径的配置
右键解决方案,上面有个参数设定的选项。通过这个地方设置代码的生成路径和相应的参数。这里生成的路径设置,不但是生成的实体代码的位置的路径,也是sdm文件默认生成的路径,还有doc等等,ORM设计器能生成的所有文件的默认输出路径。项目的解决方案及命名空间也需要仔细配置。
生成数据库设计文档
生成解决方案
根据之前设定的项目参数:
生成的文件如下:
直接解决方案打开:
生成的项目代码格式如上图。
下篇预告
下一篇中将详细讲解代码生成器的实现机制与使用,谢谢关注!