微型项目实践(3):实体代码的生成

上两篇我们已经有了一个XML,并且根据这个XML生成了数据库,这次我们来看一下如何从这个XML得到初步的实体类。还是那个XML:

   1:  <?xml version="1.0" encoding="utf-8" ?>
   2:  <Entities xmlns="http://it.ouc.edu.cn/EntityDescription/V2">
   3:    <Entity title="日志" name="Blog" module="Blogs">
   4:      <Item title="标题" name="Title" type="text" require="true"/>
   5:      <Item title="内容" name="Content" type="longtext" require="false"/>
   6:      <Item title="所属分类" name="BlogClass" type="entity" entityName="BlogClass" require="false"/>
   7:      <Item title="创建时间" name="CreateDateTime" type="datetime" require="true"/>
   8:      <Item title="更新时间" name="UpdateDateTime" type="datetime" require="true"/>
   9:    </Entity>
  10:    <Entity title="日志分类" name="BlogClass" module="Blogs">
  11:      <Item title="名称" name="Name" type="text" require="true"/>
  12:      <Item title="描述" name="Description" type="text" require="false"/>
  13:    </Entity>
  14:  </Entities>
 

修改上用于生成数据库脚本的那个单元测试,加入以下代码:

   1:  /// <summary>
   2:  /// 构造实体代码
   3:  /// </summary>
   4:  [TestMethod, Description("构造实体代码")]
   5:  public void Util_CreateEntityCodes()
   6:  {
   7:      var entities = getEntities();
   8:      var baseSpace = "DongBlog.Business";
   9:      var usingNameSpace = new string[] { "DongBlog.Common" };
  10:      var path = Gobal.SolutionPath + @"/DongBlog.Business";
  11:   
  12:      new LinqEntityCodeGenerater().Generate(path, baseSpace, entities, usingNameSpace, false);
  13:  }

solution仔细看上面这段代码可以发现,在生成实体代码之前我们还有一些准备工作要做:

  1. 添加DongBlog.Common类库。该类库主要包含了验证、查询的封装和诸如MD5加密、拼音首字母转换等常用的代码。具体内容可以参看代码,稍后我们会介绍一下这几个类。
  2. 添加DongBlog.Business类库。这个类库就是存放业务实体代码的地方,也就是Domain Model。里面包括所有实体类的基类(Entity)以及定义数据访问的接口(IEntityDataAccess和IDatabase),Linq使我们对于数据访问的定义得到了极大的简化。以后我们会着重分析这几个类的作用。

然后运行测试,就可以生成Blog和BlogClass这两个实体了(需要手工包含到项目中)。生成后,系统的结构和相关代码可以从右边图中看到个大概。

现在,系统的结构变得有些复杂了,我们重新调理一下:

  1. DongBlog.Common:基础设置,包含了通用的功能,相当于对.Net Framework的扩展。
  2. DongBlog.Business:领域模型,包含各种实体及其数据访问的定义。
  3. DongBlog.Test:测试,负责测试和自动化脚本。
  4. YD:工具模块,各种代码生成工具,可以跨项目复用。

以上这四个模块的依赖关系如下:

system_design  

从依赖关系中可以看到,DongBlog.Common提供基础功能,被所有模块依赖;DongBlog.Business来源于需求,只依赖于Common(虽然Business是DongBlog.Test的生成的,但是不依赖于Test,这点儿比较绕);YD是独立于项目,当然不依赖任何项目中的模块;DongBlog.Test的就比较惨了,它依赖于所有的模块。这个依赖关系图我们会随着项目的进行,不断完善。

抛掉Common这个半辅助性的模块不看,我们可以发现Business的才是系统的核心,因为业务逻辑来源于需求,决定了系统的其它模块,系统剩余部分围绕业务逻辑构建。目前这个图模块比较少,还没有很好的体现出这一点,在我们加入了数据访问和UI层之后,这个依赖关系会变得更加明显。

接下来的几篇我们将会逐步介绍Common中的一些类和Entity这个核心类,以及这些类的设计思路。

本篇代码下载

本文转自冬冬博客园博客,原文链接:http://www.cnblogs.com/yuandong/archive/2008/05/04/1182358.html ,如需转载请自行联系原作者
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序员开发量身定做的代码生成工具,所生成代码基于面向对象、分层架构设计、ORM并参考微软Petshop中的经典思想,融入了工厂设计模式及反射机制等。工具目前直接支持Oracle、SqlServer、Access、MySQL、Sybase、SQLite、DB2、PostgreSQL及支持OleDb连接的数据库,从数据库生成表对应的VB/C#实体代码,并提取表及字段的注释等信息,亦可对生成实体数据类型进行各种自定义的设置和方便的数据库操作等。如数据库列和VB/C#代码类型的映射、实体命名空间、代码个性化注释、是否生成对应的数据库操作等,操作简单实用。同时通过实体可实现简单数据库添加、修改、删除、查询等操作,同时对添加和修改提供一个统一的保存操作(即实体会根据主键或实体条件值自动判断是更新还是插入);并提供大量的相关示例代码。同时由于考虑到数据库迁移等,所生成的操作数据库代码,只需按生成的配置文件说明修改数据库连接,即可用于任何类型的数据库访问操作等,对应文件会自动解析,既一次生成可用于多种类型的数据库的操作,且当数据库表字段发生重大变化时再生成一次即可。 所有数据库的操作都是以默认实体对应表的主键为准,当然也可指定,增加和更新合并为一个保存操作,由实体本身自己判断是增加还是更新,当然你若愿意也可以分开来做,实体也提供了对应的快捷方式等。更多的好处在你用过之后即知。工具同时提供大量的示例代码(如System.Database.Demo等),用VS2005打开每个Demo文件解决方案文件(.sln)即可看到源代码,示例都是以对应数据库自带的示例库为例介绍的。 最新版本也可参见下列地址: http://download.csdn.net/source/3030634 http://www.skycn.com/soft/53715.html http://download.enet.com.cn/html/030212009031901.html http://qun.qq.com/air/#60873348/share
VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为VB/C#.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成代码基于OO、ADO.NET、分层架构、ORM,改进的抽象工厂设计模式及反射机制等。目前直接支持Oracle、SqlServer、Sybase、DB2、Access、MySQL、SQLite、PostgreSQL、DM(达梦)、OleDb和Custom(自定义)类型的数据库、PowerDesigner文件,同时也支持Informix、Firebird、MaxDB、Odbc等,可用于各种数据库,并支持自定义分页查询(Skip/Take)。从数据库生成表对应的VB/C#实体代码,并提取表及字段的注释等信息,亦可对生成实体数据类型进行各种自定义的设置和方便的数据库操作等。如数据库列和VB/C#代码类型的映射、实体命名空间、代码个性化注释、是否生成对应的数据库操作等,操作简单实用。同时通过实体可快速实现数据库表的增删改查等操作,另外,所生成的操作数据库代码,只需按生成的配置文件说明修改数据库连接,即可用于各种类型数据库的访问操作等,对应文件会自动解析,即一次生成可用于各种类型的数据库的操作;且当表字段发生重大变化时再生成一次即可。所有数据库的操作默认以实体对应表的主键(可以是联合主键)为准,当然也可指定条件。增加和更新合并为一个保存操作,由实体自己判断是增加还是更新,若你愿意也可以分开来做,实体也提供了对应的快捷方式等。更多的好处在你用过之后才会发现。工具同时提供帮助文档和大量的示例源码(如ECG.Demo等),用VS2005打开每个Demo文件解决方案文件(.sln)即可看到源代码,一些示例以对应数据库自带的示例库为例介绍的(如Oracle)。详见安装后文件和工具帮助.
摘要:VB/C#.Net实体代码生成工具(EntitysCodeGenerate)【ECG】是一款专门为.Net数据库程序开发量身定做的(ORM框架)代码生成工具,所生成的程序代码基于面向对象、分层架构、ORM及反射+工厂设计模式等。支持.Net1.1及以上版本,可用于Oracle、SqlServer、Sybase、DB2、MySQL、Access、SQLite、PostgreSQL、DM(达梦)、PowerDesigner文件、Informix、Firebird、MaxDB、Excel等和OleDb、ODBC连接的数据库并可自定义,详见文档及安装文件的示例和工具的帮助文档。 关键字: VB/C#.Net实体代码生成工具 实体代码生成工具 EntitysCodeGenerate 预期读者: 软件开发及相关人员 难度等级: 中 当前版本: 4.3 目 录 1 引言 3 2 内容 4 2.1 ORM框架的实现:VB/C#.Net实体代码生成工具(EntitysCodeGenerate) 4 2.2 在开发中的实际应用 5 2.2.1 单个实体对象的数据库操作 6 1、获取一个实体对象信息 6 2、插入一个实体对象信息 6 3、更新一个实体对象信息 6 4、保存一个实体对象信息 6 5、删除一个实体对象信息 7 6、取得实体映射表数值字段的最大值+1 7 2.2.2 多个实体对象的数据库操作 7 1、实体集对象的使用 7 2、结合事务处理 7 2.2.3 数据查询及通用DML操作 9 1、 常用实体对象查询 9 2、 ORM结构化查询 9 (1)、Select查询 10 (2)、From连接查询 10 (3)、Where语句的Condition条件 11 (4)、Order By排序功能 11 (5)、Group By分组条件及排序 12 (6)、结合事务处理的功能 14 3、Delete删除 15 4、Update更新 15 5、Insert插入 16 2.2.4 DbCore+SQL/存储过程 17 1、DbCore+SQL 17 2、DbCore+存储过程 19 2.2.5 Extend辅助扩展功能 20 1、TableHelp辅助扩展 20 2、CommonHelp常用方法扩展 22 2.2.6 ORM的分析及与Xml的交互 22 1、ORM的分析 22 2、与XML的交互 23 3 结束语 23 4 相关下载地址 24 http://www.skycn.com/soft/53715.html http://download.enet.com.cn/html/030212009031901.html http://www.newhua.com/soft/98941.htm http://www.duote.com/soft/32643.html http://www.crsky.com/soft/25626.html http://download.csdn.net/source/3030634 http://qun.qq.com/air/#60873348/share http://blog.csdn.net/chutao http://lxchutao.blog.163.com http://hi.baidu.com/lxchutao http://download.enet.com.cn/eblog/blog/htm/uid_21280.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值