應網友的要求,抽了點時間寫了這個Demo,希望對2.2版想升級到3.0的朋友或正在使用3.0的朋友有所幫助。大家在使用Demo過程中如果發現什么問題或有什么建議,可以直接將Bug提交給我或告訴我,我會抽時間進行處理的,如果支持我寫的文章,也請登陸我的博客推薦一下,有你的支持,我會更有動力。
本Demo使用了T4模版,可以通過模版的應用達到快速開發目的,在我實際的項目當中,可減少70%以上的代碼量(計算方面的代碼都放在了邏輯層,而邏輯層代碼絕大部分都是直接生成)以及80%以上的出錯率(程序員平常最多的出錯是在機械式的復制與粘貼操作后產生的視覺疲勞,由於沒有將復制后的所有相關名稱進行修改引起的錯誤)
================================================================
名 稱:SubSonic3.0 Demo
版 本:1.0
最后更新:2013-9-13
作 者:Empty(AllEmpty)
Email: 1654937@qq.com
學習討論:SubSonic3.0學習群(327360708)
相關博客:http://www.cnblogs.com/EmptyFS/
================================================================
開發環境:
Vs2010 + SubSonic3.0.0.4.2 + ExtAspNet3.1.9.2
本Demo只是簡單的實現了登陸、管理員表的查詢以及管理員記錄的添加、刪除、修改、改變狀態功能
底層使用SubSonic3.0.0.4.2插件 + T4模版生成
邏輯層使用T4模版生成將開發過程中所需要的各種調用函數,在實際項目中,使用本方式開發的框架,代碼開發量減少了70%以上,出錯率也將減到最低。程序員只需要簡單的復制+粘貼,然后修改一些UI就可以完成網站后台管理系統或企業類管理軟件的功能開發,只需要在小部分需要使用一些邏輯處理的頁面中實現一些邏輯處理就可以了,大大減輕了項目開發的工作量,提高開發效率。
本Demo只是實現了簡單的功能,並沒有詳細將管理系統的各種功能實現出來,只是通過本Demo提供了一種快速開發的思想,大家可以深入研究后自由發揮各自的想象與需要,去實現出來。
Demo中各級目錄與文件的說明,請查看附件中的數據字典,里面有詳細的說明。
項目中的Text.aspx.cs文件是SubSonic3.0的各種使用例子,如果大家對SubSonic3.0不熟悉的話,可以將它設為啟動項,啟動DeBug調試方法,逐行調試查看,就知道怎么使用了,里面包含了插件各種常用的調用方式。
另外還要重點說明一下的是DataAccess/SubSonic/EntityTable.tt生成的EntityTable.cs文件,這個文件直接生成數據表名與及相關字段名,可直接使用DataAccess.DataModel.T + Table(如ManagerTable.TableName可獲取表名...)獲取數據表名稱與各個字段名稱,使用這種方式可以減少代碼中的硬編碼,這樣在修改數據庫字段或內容時,VS就會直接報錯,讓我們可以馬上知道要修改那幾個地方,減少出錯的可能。
Login項目中的SubSonic/CreateBll.tt模版主要用於生成各種邏輯類,在<#
foreach(var col in tbl.Columns){
if (col.SysType == "byte")
{
#>
和
<#
}
}
#>
#endregion 模版生成函數
如圖:
之間放的是根據字段名標識不同,對應生成不同的方法。
生成后的邏輯類內容,如圖
大家在實現使用中,可以通過定義不同的字段名給程序甄別而生成你所需要的函數,這樣就會大大減輕開發中的工作量,另外使用生成功能,可以避免開發過程中,由於機械式的復制與粘貼產生的視覺疲勞,沒有修改相關名稱引起的錯誤。由於生成的邏輯類使用了partial這個類修飾符,所以我們還可以定義同名的邏輯類,里面放那些不能用模版來生成的方法,這樣生成與自定義的方法分開兩個文件處理,就不用有修改后要花大量時間進行復制粘貼修改相關類了。
最后需要指出的是SubSonic3.0插件目前不支持括號嵌套功能,有雙層括號時會給解釋成多個單括號,甚至出錯,所以大家添加查詢條件時要注意這一點,等以后有時間再研究一下代碼,看能否加上括號嵌套功能。還有使用In查詢時,插件也不能很好的進行解釋,所以我封裝了ConditionHelper.cs條件類,將In查詢轉換為多個Or關系的等於查詢語句,在使用時也有一些講究的,具體請查看Test.aspx.cs中的例子。
下載地址:http://yunpan.cn/QGFA6U8p8cz4M 密碼:e701
下載地址於2013-09-13 15:56重新更新了,修改了查詢條件封裝類(SqlqueryCondition.cs)的一個小Bug
本文章為原創內容,轉載請保留下面信息。
發表本編內容,只要主為了和大家共同學習共同進步,有興趣的朋友可以加加Q群:SubSonic3.0學習群(327360708)或Email給我(1654937#qq.com),大家一起探討,由於本人工作很繁忙,如果疑問請先留言,回復不及時也請諒解。
想了解更多SubSonic3.0的相關問題,請觀注博客:http://www.cnblogs.com/EmptyFS/