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語句等。

浙公網安備 33010602011771號