標籤:
Solutions Design 公司於2016年5月發布了LLBL Gen Pro 5.0,這個新版本的發布出乎於我的意料。我的猜想是從4.2升級到4.5,再升級5.x版本,主要版本號的變更會給原有客戶帶來成本上的壓力。299歐元的售價對於中小創業公司或大公司並不算便宜,在官網上查了一下最新的報價,如下表所示:
| Number of licenses |
Price per license Standard
|
Price per license Plus |
| 1 to 2 |
€ 299.- |
€ 398.- |
| 3 to 5 |
€ 269.- |
€ 368.- |
| 6 to 10 |
€ 259.- |
€ 358.- |
| 11 to 20 |
€ 249.- |
€ 348.- |
| more than 20 |
€ 239.- |
€ 338.- |
新版本的LLBL Gen Pro在介面存在相當多的變化,引入了類似Visual Studio(VS look-like)的介面風格-扁平化,日常的一些操作介面也有變化。
1 建立新項目,選擇LLBL Gen Pro Runtime Framework
從中看出,LLBL Gen Pro支援Entity Framework開發和NHibernate的開發。從維基百科中查詢到,目前.NET領域中有以下17種流行的ORM架構。
|
序號 |
項目 |
官方地址 |
|
1 |
Base One Foundation Component Library |
www.boic.com |
|
2 |
Castle ActiveRecord |
http://www.castleproject.org/projects/activerecord/ |
|
3 |
DatabaseObjects |
http://www.hisystems.com.au/databaseobjects |
|
4 |
DataObjects.NET |
http://dataobjects.net/ |
|
5 |
Dapper |
github.com/StackExchange/dapper-dot-net |
|
6 |
ECO |
http://www.capableobjects.com |
|
7 |
Entity Framework |
msdn.microsoft.com/en-us/data/ef.aspx |
|
8 |
EntitySpaces |
http://www.entityspaces.net |
|
9 |
iBATIS |
http://ibatis.apache.org |
|
10 |
LINQ to SQL |
msdn.microsoft.com/en-us/data/ef.aspx |
|
11 |
Neo |
http://neo.sourceforge.net/ |
|
12 |
NHibernate |
nhibernate.info |
|
13 |
nHydrate |
http://www.nhydrate.org/ |
|
14 |
Persistor.NET |
http://www.persistor.net/ (已經失效) |
|
15 |
Quick Objects |
http://www.quickobjects.com/ (已經失效) |
|
16 |
SubSonic |
http://subsonicproject.com/ |
|
17 |
XPO |
https://www.devexpress.com/ |
地址 https://en.wikipedia.org/wiki/List_of_object-relational_mapping_software
其中大部分ORM架構都停止更新或不再維護,非常可惜。
2 選擇關聯式資料庫
在Catalog Explorer(資料庫瀏覽器)中選擇從資料庫產生關聯式模式
LLBL Gen Pro 支援Model-First或Database-First兩種開發模型,也可以考慮新建立模型,再通過中Generate Database Schema Create Script功能表項目產生資料庫指令碼,以實現模型驅動開發。
我們選擇SQL Server 資料庫驅動,設定串連資訊,並點擊下一步按鈕。
3 選擇要映射的資料庫表,視圖,預存程序
經過這一步之後,表還沒有映射到實體中,我們需要在此表單關閉後,在Database Explorer中以選擇表的方式建立實體物件,這樣就完成了表與實體的映射設計。
到這裡,我們就完成了資料庫表與實體映射的設定工作。如所示,在Project Explorer(項目瀏覽器)中看到新增加的實體Bug,可通過右鍵選擇實體編輯它的,比如設定Type Converter,欄位的附加屬性等操作。
4 產生Visual Studio 專案檔和原始碼檔案
點擊工具列中的按鈕Generate Source Code或按F7,彈出代碼產生選項表單:
LLBL Gen Pro這裡有一個很方便的功能改進,在這裡我們可以定義一個或多個產生選項,並將它儲存起來,下次產生專案檔時,只需要勾選相應的項目產生選項即可。
點擊按鈕Edit Selected Task Specifics,彈出產生表單。點Advanced…按鈕可選擇項目產生模板。
之後再點擊確定按鈕,返回產生選項表單,現在變成了綠色的勾,表示當前產生任務有效。
點擊Perform Tasks…完成項目代碼的產生。
5 啟動Visual Studio 載入LLBL Gen Pro產生的兩個項目,建立Windows Forms測試專案。
為了讀取資料庫BugTracker中的表Bugs的資料,請參考以下步驟完成:
1) 開啟資料來源表單中,選擇建立資料來源,選擇Object類型,並選擇第4步產生的BugEntity實體
2) 拖放一個BindingSource控制項到表單中,設定此控制項的資料來源為上一步的資料來源BugEntity
3) 拖一個DataGridView控制項到介面中,選擇資料來源為上一步的資料來源控制項
在表單啟動事件中增加以下代碼以讀取資料庫中的Bugs表資料。
const string connectionString = "data source=(local);initial catalog=BugTracker;integrated security=SSPI;persist security info=False;packet size=4096";
using (DataAccessAdapter adapter = new DataAccessAdapter(connectionString))
{ IRelationPredicateBucket bucket=new RelationPredicateBucket();
bucket.PredicateExpression.Add(BugFields.BgReportedDate > new DateTime(2013, 12, 31));
ISortExpression sortExpression=new SortExpression(BugFields.BgReportedDate|SortOperator.Descending);
IPrefetchPath2 prefetchPath=new PrefetchPath2(EntityType.BugEntity);
EntityCollection collection = new EntityCollection(new BugEntityFactory());
adapter.FetchEntityCollection(collection, bucket, 0, sortExpression, prefetchPath,null);
bugBindingSource.DataSource = collection;
gridBugs.DataSource = bugBindingSource;
}
這段代碼的目的是讀取Bug報告日期遲於2013年12月31日的Bug,按照報告日期倒序排列。我將它翻譯成SQL供參考
SELECT * FROM Bugs
WHERE BgReportedDate>‘2013/12/31‘
ORDER BY BgReportedDate DESC
整個程式開發過程書寫沒超過10行代碼,開發效率與微軟的Entity Framework不相上下,是EF之外的又一重量級資料存取解決方案。官網上號稱世界上有100多個國家,超過5500多個客戶正在使用這一套ORM開發架構。
LLBL Gen Pro 5.0 公司專屬應用程式開發入門