这篇文章主要讲解怎样用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文件夹,其他同上。