MyGeneration学习笔记(1) : 使用MyGeneration生成存储过程和数据访问层代码

      MyGenertion是一款不错的代码生成ORM代码生成工具,下面是我学习过程中的一些笔记(总结了一下dOOdads C# Quick Reference文档,还有自己在使用和调试过程中遇到的问题及自己的解决方法),贴出来与大家共享 。

 

     这篇文章主要讲解怎样用MyGeneration(我用的MyGeneration的版本号是1.5.1)的dOOdad模板(使用其自带的模版)来生成代码,及将这些代码加入到项目中。

  

1.   准备工作: 数据库设计(MS Sql Server):
   1). 为每张表设置一个identity列作为主键。也可以用GUID或多列作为主键。
   2). 为每张表增加列名为“RowVersion”的列,数据类型设为时间戳(timestamp)。dOOdad将用这列处理并发。
   3). dOOdad只能处理单张表,不能处理多表联合查询。要处理多张表,可以创建视图,用操作试图替换多表问题。
   4). 在设计数据库和应用程序时,尽可能少地使用null。

  

2.  安装MyGeneration,添加dOOdad项目到解决方案:
   1).http://www.mygenerationsoftware.com下载并安装。


   2). 安装完成后,dOOdad项目位于../MyGeneration/Architectures/dOOdad/CSharp/MyGeneration.dOOdad/目录下,有两个版本,2003和2005,根据你的需求,选择一个添加到解决方案中。另外,目录下有个readme.txt文件,也将了一些dOOdas的使用步骤和说明。
       当然,我们也可以直接打开该项目,编译生成dll文件,然后在应用程序中添加该程序集引用;但该项目的代码还存在一些问题,可能要在调试的时候才能发现,这时再修改代码添加引用就很不方便,所以个人不推荐这样做。
在DbAdapters文件夹下,默认所有的文件的生成操作属性都是"无",即不编译进项目。分别选择应用程序的数据库所对应的两个*Entity.cs和*DynamicQuery.cs两个文件,将他们的属性--生成操作改为"编译",这样就可以编译进生成的Assembly中。
MyGeneration支持的数据库对应的文件:
   SQL Server (SqlClientDynamicQuery.cs, SqlClientEntity.cs)                System.Data.SqlClient
   Access        (OleDbDynamicQuery.cs, OleDbEntity.cs)                          System.Data.OleDb
   Oracle          (OracleClientDynamicQuery.cs, OracleClientEntity.cs)   System.Data.OracleClient
   PostgreSql  (PostgreSqlDynamicQuery.cs, PostgreSqlEntity.cs)       Npgsql  
   Firebird        (FirebirdSqlDynamicQuery.cs, FirebirdSqlEntity.cs)        FirebirdSql.Data.Firebird
   VistaDB       (VistaDBDynamicQuery.cs, VistaDBEntity.cs)                   VistaDB
   SQLite         (SQLiteDynamicQuery.cs, SQLiteEntity.cs)                        Finisar.SQLite
   MySQL         (MySQL4DynamicQuery.cs, MySQL4Entity.cs)                  MySql.Data.MySqlClient
  3). 现在就可以编译了。

 

 

3.  其他需要访问该Assembly的项目:
   1). 为项目添加引用--项目--MyGeneration.dOOdad
   2). 为项目添加两个文件夹:
       DAL(数据访问层):用于存放MyGeneration创建的Abstract类(下面会讲如何使用MyGeneration来生成这些类)。
       BLL(业务逻辑层): 用于存继承上面的Abstract类的具体类,可由MyGeneration自动生成。

 

 

4.  使用MyGeneration:
  4.1 生成CRUD存储过程:
      1) 运行MyGeneration,Edit--DefaultSetting,设置数据库、编程语言等。
      2) 点击工具栏-Template Browser,选择要创建的存储过程的模板
          可用的模版有:
           Microsoft SQL      - Microsoft SQL Server.dOOdad Stored Procedures
           Microsoft Access   - Microsoft Access.Access Stored Procedures
           Oracle             - Oracle.Oracle Stored Procedures
           PostgreSQL         - PostgreSQL.PostgreSQL Stored Procedures
           Firebird           - Firebird.StoredProcedures.Firebird Stored Procedures
      3) 运行模版,选择数据库和表(一般选则所有表),单击确定后,会在OutPut中输出存储过程
      4) 将生成的存储过程拷贝到查询分析器中,然后执行向数据库中写入存储过程。

  4.2 为数据库中的表生成DAL Abstract类:
      同上,选择Template Browser--dOOdad--C#(其他的与此类似)--dOOdad Business Entity--执行模版--选择上面创建的DAL文件夹,设置要生成的类的命名空间和数据库,选择所有表,然后生成Abstract类。


  4.3 为数据库中的视图生成具体类:
      选择dOOdad Business View模版,并将生成的类保存在BLL文件夹,其他同上。


  4.4 生成具体类(也可以自己写):
      选择dOOdad Concrete Class模版,其他同上。

  

5.   Visual Studio中使用上面生成的资源:
    1) 在配置文件web.config或app.config配置连接字符串。dOOdad项目中默认的key是"dbConnection",也可以修改BusinessEntity类中的_defaultConfig字段的值来修改key的默认值。
      另外,dOOdad项目有个问题就是连接字符串并没有初始化(可能是模版的bug),代码如下: 

internal   string  _raw  =   "" ;
virtual   public   string  ConnectionString
{
    
get
    
{
     
return _raw;
    }

   
set
   
{
    _raw 
= value;
   }

}

       虽然可以在应用程序中手动给属性ConnectionString赋值,但这样的话,每个业务实体在new完之后,都要给ConnectionString赋值,比较繁琐不好维护;一个比较好的办法就是在BusinessEntity的构造函数中对_raw进行初始化(自己写代码)。我用的是VS2005,可以用VS2005自动生成配置文件和配置文件的读取类Settings,然后初始化连接字符串,例如:internal string _raw = ProjectName.Properties.Settings.Default.ConnectionString;

   2)  可以在上面生成的具体类(Concrete Class)中添加应用程序自己的业务逻辑,可处理自定义存储过程和SQL语句等。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=1105875

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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 三、缺点 只支持单表,复杂的查询还要先写视图

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值