介紹
AgileEAS.NET平台做為一個快速應用開發平台,其目的為是為了提高應用軟體的生產效率,如何軟體開發的生產效率,方法是多種多樣的;使用工作簡化開發中低技術重複工作可以是一種行之有效途徑。
在AgileEAS.NET平台中,我們提供了一個集資料庫設計、代碼產生、DDL定義與一體的資料實體設計器。
在早期的AgileEAS.NET版本中包含一個代碼產生器,用於根據現在資料庫產生ORM代碼,後來的思路是想介入項目的資料庫設計環節,所以設計了這麼一個資料對象設計器,提供一個資料表定義工具,在項目的資料庫設計階段(環節),使用資料表設計工具同時定義資料庫和資料實體模型,對象設計器會產生資料庫設計文檔、資料定義語言 (Data Definition Language)、基於分層的資料訪問層代碼。
在基於資料庫的應用開發項目中,資料庫設計是很一個很重要的過程,而這個過程寫資料庫設計檔案是一個環節,在很多軟體公司中,都是使用Word、WPS等文字表格工具寫資料庫文檔,但是資料庫文檔與資料庫建立、程式編寫過程脫節。
AgileEAS.NET平台的對象設計工作,試圖在這方面進行整合,即設計器產生的模型定義即可以產生資料庫文檔、資料庫定義語句、也可以產生開發過程的代碼。
關於資料模型
AgileEAS.NET平台針對應用開發之中的資料對象定義、儲存和交流定義一個資料對象結構模型定義檔案,資料設計器建立好的項目定義最後儲存在以.sdm為副檔名一個資料模型定義檔案。
介紹
AgileEAS.NET平台的模型定義既為對象設計的導航定義:
其組織圖為項目包含實體和模型兩大類,模型儲存資料對象的關係(目前不支援),實體儲存資料對象的定義,實體可以選擇按目錄組織,即如果項目中的實體很多,為了視覺和組織上的方便,建立目錄,並在目錄中建立實體,只支援一級目錄。
系統主介面
主視窗中共包括了5個不同的工作區:系統功能表、工具列、功能導覽列、業務工作區、系統狀態列,系統中的所有業務功能均可通過系功能導覽列訪問操作。
系統功能表
對象設計器採用導航式介面樣式,系統功能由導航和菜單兩部分組成,提供檔案、編輯、工具、視窗和協助等菜單。
工具列
工作欄上放置了與系統功能表相關的快速工具列,可以通過這些工具列快速存取相關功能模組。
導覽列
系統導覽列上列舉了項目中的資料對象組織機構,可以在導覽列上增加新的資料對象、刪除現在資料對象,設定項目屬性等功能。
導覽列預設顯示在介面的左邊,如果你想讓業務工作區更大些,以便有更大的介面空間處理業務功能,你可以在進入相關的業務功能模組後,通過系統功能表或工具列的導航命令隱藏或顯示功能導覽列。
工作區
工作區是系統工作區域,工作區根據導航和菜單的不同選擇與操作,將會載入不同的功能模組,用於完成必要的任務。
狀態列
系統狀態列上顯示了系統當前的處理任務及任務處理狀態,用於通知使用者,以便及時瞭解系統的運行情況。
關於
提供對當前應用程式的描述資訊。包括產品名稱、版本、開發商、授權資訊等。
資料解決方案
概述
在進行設計資料對象之前,需要先規劃自己的項目以及項目中的項目組織,定義好的資料對象項目儲存在硬碟上,以方便開發人員的交流和以後的修改。
建立項目
開啟檔案菜單的建立或者工具條上的建新按鈕,對象設計器建立一個資料模型項目,並重設導覽列和工具區。
儲存項目
使用檔案菜單中的儲存或者工具條中的儲存按鈕,如果專案檔已經存在於檔案系統上,則直接儲存檔案,如果是建立項目後的第一次儲存,則開啟另存新檔對話方塊保持檔案。
在檔案菜單中還提供了一個別存為功能,用於把設計模型儲存到其他的檔案之中。
開啟項目
使用檔案菜單中的開啟或者工具條中的開啟按鈕,彈出檔案開啟對話方塊:
選擇檔案系統已經存在的專案檔並開啟,系統根據模型檔案重設導覽列和清空工作區:
項目設定
在資料模型中定義了項目的一些命名空間,名稱,標題,開發語言,資料庫設定這樣的東西,在模型設計時可以能過項目參數進行修改。
在導覽列的解決方案節點右鍵選擇“參數設定”,開啟參數設定模組:
解決方案參數設計分項目參數和資料庫連接參數,是項目參數,資料庫連接設定:
項目名稱、項目標準、程式語言、命名空間等參數用於在產生資料訪問層代碼的過程之中用到,輸出目錄為產生的程式碼、文檔、SQL指令碼的輸出根目錄。
資料庫連接參數用於從資料庫產生資料對象時串連資料庫伺服器,目前支援SQL2000/2005/2008/Oracle資料庫。
資料對象定義
概述
定義資料對象是對象設計器中最重要的工作,在對象定義資訊中,儲存了程式中ORM對象所需要的對象屬性與資料庫表的欄位對應資訊,同時也儲存了資料庫表的定義資訊。
對象設計器設計成的模型用與產生項目的資料庫定義檔案、資料庫DDL指令碼以及資料訪問層的程式碼。
對象組織
對象設計器中提供了一個目錄的概念,即對於資料對象很多的解決方案,我們可以選擇在解決方案之中根據應用建立目錄,資料對象按目錄進行組織。
添加目錄
在導覽列中的實體節點右鍵點開捷徑功能表,選擇“建立目錄”,系統開啟目錄屬性聖誕框:
填寫目錄名稱和說明後點解“確定”按鈕,對話方塊關閉,建立的目錄載入到導覽列,“取消”按鈕放棄目錄的添加。
注意:目錄名稱不可為空,也不能和現有的目錄重名。
目錄屬性
在導覽列中的某個目錄節點右鍵點開捷徑功能表,選擇“目錄屬性”,系統開啟目錄屬性聖誕框:
在目錄屬性對話方塊中,可以修改目錄名稱和說明,完成成點擊“確定”按鈕完成屬性修改,“取消”按鈕放棄目錄的修改。
刪除目錄
在導覽列中的某個目錄節點右鍵點開捷徑功能表,在彈出的菜單中選擇“刪除目錄”,系統會提示您是否確認刪除,點擊“是”刪除相應的目錄。
注意:刪除目錄是系統中刪除目錄資訊,不刪除目錄中的資料對象定義,原目錄的中的資料對象轉移到解決方案實體節點之下。
對象管理
設計器中資料對象有兩個存在模型,直接位於解決方案這下,也可以依附於解決方案的目錄之中,兩種不同的方案可以混合使用,根據項目的規模進行合理構建。
添加對象
在導覽列中的實體節點或者目錄節點右鍵點開捷徑功能表,選擇“建立實體”,系統工作區開啟一個新的對象定義Tab頁:
在對象定義Tab頁中,可以完成資料對象所指向的資料庫表資訊定義(資料表名及欄位資訊)、ORM對象定義(屬性及屬性與資料字的映射)。
刪除實體
在導覽列中的某個目錄節點右鍵點開捷徑功能表,在彈出的菜單中選擇“刪除目錄”,系統會提示您是否確認刪除,點擊“是”刪除相應的目錄。
注意:刪除目錄是系統中刪除目錄資訊,不刪除目錄中的資料對象定義,原目錄的中的資料對象轉移到解決方案實體節點之下。
定義實體
在日常應用中,對象設計器工作的90%是由的介面完成的,在這個介面中,我們完成資料對象的定義,間接的完成了資料庫的設計、ORM對象的設計。
實體包含名稱,資料表,說明和1-N個屬性記錄,實體的名稱,資料庫,說明直接在文字框填寫。
實體的屬性集合由下面的表格中進行填寫,增加新的屬性/列,在*標記的行中直接進行寫,刪除一條記錄時使用選中某一條,按下刪除鍵即可。
在屬性定義中,屬性的類型(程式類型)與資料類型是聯動的,即如果在這兩個類型中任務選擇一種,另一個類型都會根據類型轉換器得到一個對應的類型,因為程式中的類型比較廣泛,而資料庫的類型比較嚴謹,所以建議的做法是設定資料類型比較準確一些。
實體定義模組的UI包含著7個Tab頁,最主要的是實體定義Tab頁,還附加了4個代碼Tab頁、一個資料庫指令碼、一個文檔Tab頁。
四類代碼
因為AgileEAS.NET平台ORM系統中對實體和表進行了分別的定義,所以針對每個資料對象定義,會產生4個代碼檔案,分別為表介面、表實現、實體介面、實體實現。
在設計器環境中直接向IDE環境複製代碼,使用右鍵菜單中的全選、複製即可,也可以通過Ctrl+A、Ctrl+C實現。
DDL指令碼
針對每個資料對象定義,工具會產生一段SQL指令碼,定義資料表的建立和欄位,資料表和欄位的注視等自描述資訊也會一併寫進腳步。
同樣,和程式碼一樣,可以使用右鍵菜單中的全選、複製即可,也可以通過Ctrl+A、Ctrl+C實現。
文檔定義
針對每個資料對象定義,工具都產生一段資料庫定義文檔,包含資料表名稱、說明、所有者,各資料列名稱、資料類型、是否為空白、主鍵等資訊。
解決方案輸出
概述
對象設計器提供基於解決方案的代碼輸出、文檔輸出、DDL指令碼輸出,可以一步產生供vs2005之上開啟的資料層項目和解決方案。
輸出代碼
通過工具菜單中的產生代碼功能開啟代碼輸出對話方塊:
在對話方塊中選擇輸入目錄,預設為在解決方案屬性中設計的輸出目錄,點擊“產生”按鈕完成解決方案的產生,輸入如下目錄結構:
我們在VS環境中開啟AgilePM解決方案:
模型修改
對象設計器產生的程式碼採用了部分類別的技術方案,即同一個資料對象把產生的4個代碼檔案分解成8個代碼檔案,其中4個代碼檔案產生與資料對象屬性定義相關,建議不做修改,檔案名稱中帶有.Generator.cs,並且全部組織在項目的Generat檔案夾中,程式碼中有以下注釋:
//------------------------------------------------------------------------------
// <auto-generated>
// 此代碼由SmartEAS.NET/AgileEAS.NET資料模型設計工具產生。
// 運行時版本:2.0.50727.3053
//
// 對此檔案的更改可能會導致不正確的行為,並且如果
// 重建代碼,這些更改將會丟失。
// </auto-generated>
//------------------------------------------------------------------------------
另外4個檔案用於儲存使用者自訂的資料存取碼,檔案名稱不帶.Generator.cs,產生的程式碼位於項目的根目錄之中。
為什麼要做這樣的設定呢,這得益長期的開發實踐,市面上有很多代碼產生工具,雖然說產生器工具可以加速開發,但是產生的程式碼是絕對不會滿足複雜應用,程式員必須對產生的程式碼增加新的功能或者修改,那麼當資料定義模型發生改變之後,重建的代碼就會把程式員所做的修改覆蓋。
採用部分類別的方案進行分解之後,我們把與資料模型定義與程式員的特殊業務代碼進行了分離,當模型發生改變之後,重建的代碼保留了程式員的修改,只覆蓋Generat檔案夾中的代碼檔案。
介面驅動的資料訪問層
AgileEAS.NET平台一直在實踐著介面驅動的思想,同時也在建議應用開發基於介面驅動,AgileEAS.NET平台實現一組實用並且簡單的ORM,應用開發的資料訪問層也就是基於ORM技術的資料訪問層。
我們在應用開發中,經常會遇到同樣的產品需要運行在不同的資料庫系統之上,比台有客戶需要運行在SQLServer之上的版本、有的需要運行在ORACLR之上的版本。
在這種情況下,採用介面驅動的資料訪問層是一個不錯的選擇;定義一組資料訪問層介面組件及其不同資料庫類型的的資料訪問層實現組件,業務實現依賴於資料介面層而與資料實現層解耦,運行期不同的資料庫類型需求只需要修改系統的設定檔。
有關於資料介面層的配置請參考《AgileEAS.NET平台開發指南》,這裡不在詳細說明。
對象設計器產生的程式碼預設是基於介面驅動的資料層,即解決方案中包含兩個項目,一個是資料提供者層,另一個是基於當前設計時環境的資料庫實現。
在現實環境中,有些應用我們從一開始就知道他只可能應用於某種單一的資料庫環境,對於這種應用,如果還採用基於介面驅動的資料訪問層,其修改成本就會略高一些,AgileEAs.NET平台也支援這種非介面驅動的資料層,即產生單一的資料層項目。
在對象設計器的解決方案屬性中有一個選項“是否產生介面層”,這個選項預設是選中的,如果只是基於單一資料庫,請取消選擇,項目的輸出方案則變為:
DDL指令碼
通過工具菜單中的產生指令碼功能開啟指令碼輸出對話方塊:
在對話方塊中選擇輸入檔案,預設為在解決方案屬性中設計的輸出目錄之下的SqlScript\TableCreate.sql,點擊“產生”按鈕完成DDL指令碼的產生,用SQL Server Management Studio開啟產生的指令檔:
文檔瀏覽
通過在“工具”菜單中的“文檔瀏覽”即可以在工作區開啟一個解決方案文檔瀏覽視窗,顯示解決方案中所有資料對象/資料表定義資訊:
開發人員可以直接複製到word、wps等文書處理軟體進行編輯,也可以直接使用“工具”菜單中的輸出檔案(Rtf、Excel、Html)直接輸出資料庫定義文檔:
輸出文檔
通過在“工具”菜單中的“輸出檔案(Rtf)”、“輸出檔案(Excel)”、“輸出檔案(html)”開啟文檔輸出對話方塊:
通過“瀏覽..."按鈕選擇輸出檔案或者使用預設的檔案路徑,最後點擊“產生”按鈕完成資料庫檔案的輸出:
Excel格式:
html格式:
Rtf格式:
從資料庫產生
概述
對象設計器不僅提供了基於原生的資料對象定義模型產生資料庫表對象的能力,同時也提供了從現在的資料庫物件反向產生資料對象定義的能力(反向產生)。
操作步驟
通過“工具”菜單中的“從資料庫產生”功能開啟資料庫連接對話方塊:
選擇反向產生的來源資料庫類型,填寫伺服器、使用者名稱、密碼等資訊(預設為解決方案的資料庫連接資訊),點擊“下一步”開啟資料庫表、視圖選擇對話方塊:
資料庫中的資料庫、視圖基於使用者/架構、資料表/視圖的組織方式,首先選擇相應的使用者/架構,再選擇要匯入的資料庫表、視圖,點擊“開始”完成匯入資料對象到當前模型定義:
反向產生工具會讀取資料庫中繼資料定義資訊如欄位名稱、資料類型、長度、主鍵、是否為空白、注釋等資訊,產生相應的資料定義模型,開發人員需要進行修改,主要是資料對象的屬性名稱大小寫調整,預設產生的屬性為首字母大寫,以及補充資料對象、資料庫表欄位的標題、注釋資訊。
本文的PDF版本下載:AgileEAS.NET平台對象設計器使用教程
QQ群:15118502
AgileEAS.NET應用開發平台-系列目錄
AgileEAS.NET官方網站