專利名稱:一種基于c#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法。
背景技術(shù):
經(jīng)過了最近 20 年,面向 對(duì)象編程技術(shù)(object-oriented (00) programmingtechnologies)在工業(yè)領(lǐng)域的應(yīng)用已經(jīng)進(jìn)入了一個(gè)穩(wěn)定的發(fā)展階段。程序員現(xiàn)在都已經(jīng)認(rèn)同像類(classes)、對(duì)象(objects)、方法(methods)這樣的語言特性。C#是一種典型的面向?qū)ο笳Z言,現(xiàn)在一種常用開發(fā)方式就是基于面向?qū)ο蟮娜龑蛹軜?gòu)。通常意義上的三層架構(gòu)就是將整個(gè)業(yè)務(wù)應(yīng)用劃分為表現(xiàn)層(Π)、業(yè)務(wù)邏輯層(BLL)、數(shù)據(jù)訪問層(DAL)。區(qū)分層次的目的即為了“高內(nèi)聚,低耦合”的思想。其中數(shù)據(jù)訪問層直接操作數(shù)據(jù)庫(kù),對(duì)不同的模型(Model)數(shù)據(jù)進(jìn)行增、刪、改、查等操作。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是提供一種節(jié)省大量開發(fā)的工作量和單元測(cè)試的工作量,并且當(dāng)模型結(jié)構(gòu)發(fā)生改變,也不需要連帶修改其他函數(shù)的基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法。本發(fā)明是通過以下技術(shù)方案來實(shí)現(xiàn)的一種基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,包含三層構(gòu)架,所述三層構(gòu)架具有User模型層、UserControl Ier業(yè)務(wù)層和UserProvider數(shù)據(jù)層,其步驟如下I)定義一個(gè)或兩個(gè)屬性類;2)對(duì)模型層進(jìn)行解析;3)定義基礎(chǔ)數(shù)據(jù)層BaseProvider抽象類,及各種數(shù)據(jù)類型的實(shí)用類;4)數(shù)據(jù)訪問層工廠 ProviderManager ;5)不同數(shù)據(jù)訪問模式之間的切換及結(jié)合。進(jìn)一步地,所述屬性類包含表屬性類和字段屬性。進(jìn)一步地,所述表屬性包含表名、主鍵、連接名和默認(rèn)排序?qū)傩?。進(jìn)一步地,所述字段屬性包含字段類型和字段長(zhǎng)度屬性。本發(fā)明的基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法的有益效果是減少開發(fā)者工作量,在數(shù)據(jù)訪問層方面達(dá)到快速開發(fā)的效果。具體有點(diǎn)如下1)減少在數(shù)據(jù)訪問層的重復(fù)開發(fā),能顯著提高工作效率;2)輕松實(shí)現(xiàn)不同數(shù)據(jù)庫(kù),不同數(shù)據(jù)訪問類型(比如Oracle與Mssql)的并行以及切換;3)快速建表;4)對(duì)于需要擴(kuò)展的數(shù)據(jù)函數(shù)自動(dòng)識(shí)別對(duì)應(yīng)數(shù)據(jù)訪問類。
具體實(shí)施例方式一種基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,包含三層構(gòu)架,所述三層構(gòu)架具有User模型層、UserController業(yè)務(wù)層和UserProvider數(shù)據(jù)層,其步驟如下1)定義一個(gè)或兩個(gè)屬性類;2)對(duì)模型層進(jìn)行解析;3)定義基礎(chǔ)數(shù)據(jù)層BaseProvider抽象類,及各種數(shù)據(jù)類型的實(shí)用類;4)數(shù)據(jù)訪問層工廠ProviderManager ;5)不同數(shù)據(jù)訪問模式之間的切換及結(jié)合。其中,所述屬性類包含表屬性類和字段屬性。所述表屬性包含表名、主鍵、連接名和默認(rèn)排序?qū)傩?。所述字段屬性包含字段類?主鍵和普通)和字段長(zhǎng)度屬性。實(shí)施例II)調(diào)用某個(gè)模型數(shù)據(jù)訪問 層實(shí)例;2)判斷是否已有靜待緩存;3)已有靜待緩存返回實(shí)例。實(shí)施例2I)調(diào)用某個(gè)模型數(shù)據(jù)訪問層實(shí)例;2)判斷是否已有靜待緩存;3)沒有靜待緩存進(jìn)入判斷是否有對(duì)應(yīng)的數(shù)據(jù)訪問類;4)有對(duì)應(yīng)的數(shù)據(jù)訪問類進(jìn)入實(shí)例化該類;5)將該實(shí)例放入靜態(tài)緩存;6)返回實(shí)例。實(shí)施例3I)調(diào)用某個(gè)模型數(shù)據(jù)訪問層實(shí)例;2)判斷是否已有靜待緩存;3)沒有靜待緩存進(jìn)入判斷是否有對(duì)應(yīng)的數(shù)據(jù)訪問類;4)沒有對(duì)應(yīng)的數(shù)據(jù)訪問類進(jìn)入實(shí)例化該類;5)根據(jù)該模型的連接方式生成改對(duì)應(yīng)實(shí)例;6)將該實(shí)例放入靜態(tài)緩存;7)返回實(shí)例。附錄User模型層
[DBTablelnfo(〃T_User〃,"UserID")]public class User{
private int userID;
[DBFieldInfo(DBFieldType. Key)] public int UserIDf get; set; }
private string userName;
[DBFieldInfo(DBFieldType. Normal)] public string UserName{ get; set; }
private int roleID;
[DBFieldInfo(DBFieldType. Normal)] public int RoleID{ get; set; }
I附錄UserController 業(yè)務(wù)層
public class UserController
{
public static List<User> GetList(string filter)
{
return ProviderManager. GetProvider<User>(). GetList(filter);
}
public st atic User Insert (User user)
{
return ProviderManager. GetProvider<User>(). Insert (user);
}
///其他函數(shù)
}附錄UserProvider 數(shù)據(jù)層
public class UserProvider : SqlBaseProvider<User>
{
public override void Delete(int keyValue)
{
//自定義刪除操作
}
}本發(fā)明的基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法的有益效果是減少開發(fā)者工作量,在數(shù)據(jù)訪問層方面達(dá)到快速開發(fā)的效果。具體有點(diǎn)如下1)減少在數(shù)據(jù)訪問層的重復(fù)開發(fā),能顯著提高工作效率;2)輕松實(shí)現(xiàn)不同數(shù)據(jù)庫(kù),不同數(shù)據(jù)訪問類型(比如Oracle與Mssql)的并行以及切換;3)快速建表;4)對(duì)于需要擴(kuò)展的數(shù)據(jù)函數(shù)自動(dòng)識(shí)別對(duì)應(yīng)數(shù)據(jù)訪問類。以上所述,僅為本發(fā)明的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此,任何不經(jīng)過創(chuàng)造性勞動(dòng)想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書所限定的保護(hù)范圍為準(zhǔn)。
權(quán)利要求
1.一種基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,其特征在于包含三層構(gòu)架,所述三層構(gòu)架具有User模型層、UserController業(yè)務(wù)層和UserProvider數(shù)據(jù)層,其步驟如下 1)定義一個(gè)或兩個(gè)屬性類; 2)對(duì)模型層進(jìn)行解析; 3)定義基礎(chǔ)數(shù)據(jù)層BaseProvider抽象類,及各種數(shù)據(jù)類型的實(shí)用類; 4)數(shù)據(jù)訪問層工廠ProviderManager; 5)不同數(shù)據(jù)訪問模式之間的切換及結(jié)合。
2.根據(jù)權(quán)利要求I所述的基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,其特征在于所述屬性類包含表屬性類和字段屬性。
3.根據(jù)權(quán)利要求2所述的基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,其特征在于所述表屬性包含表名、主鍵、連接名和默認(rèn)排序?qū)傩浴?br>
4.根據(jù)權(quán)利要求2所述的基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,其特征在于所述字段屬性包含字段類型和字段長(zhǎng)度屬性。
全文摘要
本發(fā)明公開了一種基于C#的快捷數(shù)據(jù)訪問層實(shí)現(xiàn)方法,包含三層構(gòu)架,所述三層構(gòu)架具有User模型層、UserController業(yè)務(wù)層和UserProvider數(shù)據(jù)層,其步驟如下1)定義一個(gè)或兩個(gè)屬性類;2)對(duì)模型層進(jìn)行解析;3)定義基礎(chǔ)數(shù)據(jù)層BaseProvider抽象類,及各種數(shù)據(jù)類型的實(shí)用類;4)數(shù)據(jù)訪問層工廠ProviderManager;5)不同數(shù)據(jù)訪問模式之間的切換及結(jié)合。使用本發(fā)明的模式下,對(duì)于開發(fā)人員來說,無疑節(jié)省了大量開發(fā)的工作量和單元測(cè)試的工作量,并且當(dāng)模型結(jié)構(gòu)發(fā)生改變,也不需要連帶修改其他函數(shù)。
文檔編號(hào)G06F17/30GK102819590SQ20121027717
公開日2012年12月12日 申請(qǐng)日期2012年8月6日 優(yōu)先權(quán)日2012年8月6日
發(fā)明者涂凌翔 申請(qǐng)人:廈門市美亞柏科信息股份有限公司