1、開篇概述
從2004年學習編程,2007年學習C#以來,做的多半都是跟數據庫打交道的工作,所以也積累了很多數據庫方面的知識,用過一些ORM框架,從了解掌握到自己實現,慢慢積累了很多代碼,直到2010年的某天,想把之前和以后積累的一些代碼、編程技巧之類的融合進一個C#的開發框架中去,於是這個開發框架就誕生了。起初叫過NetData,后來改名為General,取通用之意,因為自身編程水平不是很高,所以沒有在這個框架之中糅合進一些高深的技術,都是一些技巧性的、避免重復勞動的代碼,大概也就有些反射、設計模式的應用。還應當說明的是框架之中融進了一些從網上取到的代碼,大部分都經過了本人的修改完善,已經成為了框架的一部分。
從General框架誕生之日起,我就一直將它應用到工作和業余項目,通過項目來完善功能、修改BUG,經過許多年的修改,目前BUG已經相對較少了。它主要是適用於一些中小型管理信息系統的搭建,特別是其中的數據庫訪問和ORM功能,都可以直接利用SQL語句來進行處理,大大降低了學習成本。一直以來我都將這個框架公開給同事們使用,也收到了很多好評,特別是它的簡單方便,得到許多人的青睞,也根據同事們的意見做了非常多的修改,這次將它在這里開源,一是希望將自己的部分勞動成果給更多的人共享,共同學習提升,二是希望更多的人對它進行評價,以檢驗自己的編程水平。
和General框架同時共享的還有一個代碼生成器,暫且就叫做General代碼生成器吧,這個生成器比框架的創建更早,大概是在2008年初左右,剛開始在CSDN上提供過下載,但是由於那時候這個代碼生成器還非常不完善,功能有限,所以沒有起到太好的效果,目前這個代碼生成器經過多年的改造,功能已初步完善,可以支持自定義模板的代碼生成,比較好用,作為General框架的附帶工具,一並共享出來,但目前代碼生成器還不便公開源碼。
2、General框架介紹
2.1框架的組成
打開解決方案可以看到,其實General框架的組成也不多,包括以下組件:
1)General.Common
通用資源部分,包含一些C#常用的輔助類庫,如Config、Xml、String、加解密的幫助類
2)General.Data
數據庫訪問與ORM部分,接口類是DataManager
3)General.Extend
擴展資源部分,包含一些不常用和引用第三方的類庫,如拼音生成、Pdf、Excel、Zip等
4)General.Web
Web開發輔助資源部分,主要為WebHelper類
5)General.WinForm
WinForm開發輔助資源部分,主要為FormHelper類
6)General.WinForm.ExControls
擴展控件資源
7)Sample.Market.Logic
示例項目的業務邏輯部分
8)Sample.Market.Model
示例項目的實體類部分
9)Sample.Market.WinForm
示例項目的WinForm界面
從以上的介紹可以看到,General框架不光包含數據庫訪問與ORM,還包括很多常用的開發輔助類,主要是為了簡化C#程序開發而設計。其中General.Data,即數據庫訪問與ORM部分會有一篇詳細的說明在源碼中包含。
2.2數據庫訪問與ORM
使用General框架進行數據庫開發是非常方便的,主要體現在:
1)配置簡單,通過在App.config或Web.config加入兩行配置或是一行代碼就可以完成配置;
2)支持多數據庫,目前General框架支持的數據庫有:Access、Sqlite、SqlServer、Oracle、MySql幾種;
3)統一訪問接口,所有的數據庫訪問都可以通過DataManager一個類來進行,並且DataManager提供了一個名為Default的默認實例來方便使用;
4)使用特性或Xml文件兩種方式進行數據庫映射,特別是使用特性的方式,結合代碼生成器可以非常快速的生成完所有的實體類文件;
5)豐富的方法支持,不僅支持原生SQL操作,還提供豐富的ORM方法,並且ORM結合SQL語句使用,更為靈活;
6)多種參數化支持方案,即可以通過動態參數、字典參數還可以通過鏈式編程進行參數化;
7)方便的事務支持;
8)主鍵生成支持;
9)數據庫結構訪問支持。
2.3 ORM使用舉例
下面以一個簡單的例子來了解General框架ORM部分的使用方法
1)配置
在App.config或Web.config中加入數據庫類型和默認連接字符串的配置
< configuration >
< appSettings >
<!-- 加入默認數據庫類型 -->
< add key ="DatabaseType" value ="SqlServer2005" />
</ appSettings >
< connectionStrings >
<!-- 加入默認連接字符串 -->
< add name ="Default" connectionString ="Data Source=(local);Database=Market;Persist Security Info=True;User ID=sa;Password=" />
</ connectionStrings >
</ configuration >
在程序初始化部分加入以下代碼
2)生成實體類代碼
打開General代碼生成器,批量生成所有的實體類文件到項目中
3)進行ORM操作
在界面上加入一個表格控件,並在后台代碼中加入查詢並綁定實體列表到表格控件的代碼。
4)運行程序
2.4 Web和WinForm界面開發支持
在界面開發上,以前經常會有大量的控件取值賦值操作,如實體保存前,將控件值賦值給實體屬性,如:
cust.類型 = cb_lx.SelectedValue;
cust.供貨商 = txt_ghs.Text;
cust.聯系人 = txt_lxr.Text;
cust.電話 = txt_dh.Text;
cust.手機 = txt_sj.Text;
cust.郵箱 = txt_yx.Text;
cust.地址 = txt_dz.Text;
cust.QQ = txt_qq.Text;
DataManager.Default.Save(cust);
而使用General框架,只要將控件ID命名為與實體屬性相同的名稱,然后使用WebHelper或FormHelper的CollectAndFill方法即可自動完成控件到屬性的賦值工作,如:
FormHelper.CollectAndFill( this, cust);
DataManager.Default.Save(cust);
2.5其他功能
General框架更詳細介紹會在以后慢慢完成,下面提供General框架源碼和代碼生成器的下載。