• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于.NET Entity Framework數(shù)據(jù)庫訪問機(jī)制的設(shè)計(jì)與應(yīng)用

    2014-12-18 17:57:27沈霞菲王建中
    現(xiàn)代電子技術(shù) 2014年24期
    關(guān)鍵詞:接口數(shù)據(jù)庫

    沈霞菲+王建中

    摘 ?要: Entity Framework技術(shù)因其靈活、開發(fā)周期短等優(yōu)點(diǎn),被廣泛運(yùn)用到.NET平臺(tái)開發(fā)中?;贓ntity Framework框架設(shè)計(jì)一個(gè)典型MVC架構(gòu)中的數(shù)據(jù)庫訪問層,運(yùn)用Entity Framework框架中的Code First方式結(jié)合泛型、封裝、單例模式等技術(shù),實(shí)現(xiàn)實(shí)體類映射到數(shù)據(jù)庫表并自動(dòng)往數(shù)據(jù)庫建表的功能,并對(duì)每個(gè)實(shí)體類自動(dòng)向外發(fā)布了增、刪、改、查4種操作方法,編譯成DLL庫文件以插件的形式供業(yè)務(wù)邏輯層調(diào)用,達(dá)到與業(yè)務(wù)邏輯和數(shù)據(jù)庫完全解耦。

    關(guān)鍵詞: 實(shí)體框架; 泛型類型; 接口; 數(shù)據(jù)庫

    中圖分類號(hào): TN911?34; TP392 ? ? ? ? ? ? ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ? 文章編號(hào): 1004?373X(2014)24?0005?04

    Research and application of database access mechanism based on .Net Entity Framework

    SHEN Xia?fei, WANG Jian?zhong

    (Institute of Information and Control, Hangzhou Dianzi University, Hangzhou 310018, China)

    Abstract: Entity Framework technology is widely used in .NET platform development due to its flexibility, short development cycle and other advantages. A database access layer in typical MVC architecture was designed based on Entity Framework. The Code First mode in Entity Framework combined with a generic framework, packaging, single?case model and other technologies is used to realize the entity classes mapping to database tables and generate the database tables automatically. The operations of addition, deletion, update and selection are released to each entity class automatically. The DLL library files are compiled for the business logic layer call in the form of plug?in to achieve the complete decoupling of business logic and database.

    Keywords: Entity Framework; generic type; interface; database

    0 引 ?言

    企業(yè)在開發(fā)軟件的過程中,為提升開發(fā)效率和增加技術(shù)積累,對(duì)不同的項(xiàng)目需求提取出一些共同的框架,數(shù)據(jù)庫訪問層便是其中之一。目前有很多好地ORM[1?2](對(duì)象關(guān)系映射機(jī)制)框架已經(jīng)很好地實(shí)現(xiàn)了數(shù)據(jù)訪問層,而且得到了很廣泛的應(yīng)用,但由于許多公司技術(shù)人員水平有限,提取的數(shù)據(jù)庫訪問層和業(yè)務(wù)邏輯層的耦合程度不高,對(duì)開發(fā)效率上的提升不夠明顯[3]。

    本文設(shè)計(jì)的數(shù)據(jù)庫訪問層解決了以上問題,它與業(yè)務(wù)邏輯低耦合,使用簡(jiǎn)單,以高度封裝的DLL形式調(diào)用,可以節(jié)省大量的對(duì)數(shù)據(jù)庫存取的繁瑣操作,程序員能從數(shù)據(jù)庫存取中解脫出來專注于業(yè)務(wù)邏輯的設(shè)計(jì)。

    1 相關(guān)技術(shù)

    1.1 ?Entity Framework

    實(shí)體框架,是一種對(duì)象關(guān)系映射機(jī)制(ORM),能夠減少.NET Framework開發(fā)人員面向?qū)ο缶幊汰h(huán)境與關(guān)系數(shù)據(jù)庫環(huán)境之間的不匹配情形[4],使開發(fā)人員基本上可以通過熟悉的面向?qū)ο蟮募夹g(shù)來與應(yīng)用程序的概念模型進(jìn)行交互[5]。在實(shí)體框架中,開發(fā)人員能夠以特定于域的對(duì)象和屬性(如客戶和客戶地址)形式使用數(shù)據(jù),而不必考慮存儲(chǔ)此數(shù)據(jù)的基礎(chǔ)數(shù)據(jù)庫表和列。開發(fā)人員可以對(duì)概念模型發(fā)出數(shù)據(jù)訪問操作,然后實(shí)體框架會(huì)將該操作轉(zhuǎn)換為關(guān)系數(shù)據(jù)庫操作。

    1.2 ?Code First

    Code First是基于Entity Framework的新的開發(fā)模式,原來只有Database First和Model First兩種[6]。Code First顧名思義,就是先用C#/VB.NET的類定義好領(lǐng)域模型(實(shí)體類),然后用這些類映射到現(xiàn)有的數(shù)據(jù)庫表或者自動(dòng)產(chǎn)生新的數(shù)據(jù)庫表。Code First同樣支持通過Data Annotations或fluent API進(jìn)行定制化配置[7]。其中Entity Framework庫里面的DbContext基類為操控實(shí)體對(duì)象執(zhí)行上下文環(huán)境,提供所需的架構(gòu)和映射元數(shù)據(jù)(Meatadata)、數(shù)據(jù)庫鏈接,同時(shí)還包括對(duì)象緩存、跟蹤狀態(tài)和關(guān)聯(lián)管理等功能[8]。使用時(shí),定義一個(gè)繼承于DbContext的類,在該類里面配置好需要映射到數(shù)據(jù)庫表的各實(shí)體類。配置好后,這個(gè)類就成為了業(yè)務(wù)邏輯層里實(shí)體類和數(shù)據(jù)庫表交互的中間模型。

    2 數(shù)據(jù)庫訪問機(jī)制設(shè)計(jì)

    2.1 ?總體設(shè)計(jì)框架

    數(shù)據(jù)庫訪問層是搭建在.NET Entity Framework框架的Code First方式之上的,將映射到數(shù)據(jù)庫表的各實(shí)體類通過DbContext類的擴(kuò)展類配置好后,這個(gè)擴(kuò)展類負(fù)責(zé)這些實(shí)體類與數(shù)據(jù)庫表的交互,這些實(shí)體類便共用了這個(gè)執(zhí)行上下文環(huán)境。當(dāng)不需要定制復(fù)雜的映射關(guān)系(大部分情況下)時(shí),可以直接以dll的形式使用本模塊,這么做實(shí)際上是每個(gè)實(shí)體類通過一個(gè)DbContext類的擴(kuò)展類映射到數(shù)據(jù)庫,即每個(gè)實(shí)體類獨(dú)立一個(gè)執(zhí)行上下文環(huán)境,將實(shí)體類泛型化,每個(gè)實(shí)體類通過泛型類型傳入數(shù)據(jù)訪問層,該層會(huì)通過層層調(diào)用自動(dòng)生成對(duì)應(yīng)的DbContext類的擴(kuò)展類(執(zhí)行上下文)。當(dāng)需要進(jìn)行定制化配置時(shí),可以重寫DataContextService,DataContextProvider,DataContext三個(gè)抽象類,手動(dòng)進(jìn)行實(shí)體類的配置,并在配置文件里配置好關(guān)系。可見本模塊的可擴(kuò)展性比較好。

    如圖1所示,該數(shù)據(jù)庫訪問模塊邏輯上又分三層:基礎(chǔ)服務(wù)層、倉儲(chǔ)層、數(shù)據(jù)訪問層?;A(chǔ)服務(wù)層,該層通過讀取配置文件信息獲得對(duì)應(yīng)倉儲(chǔ)的程序集名和類型名,然后通過“反射”獲取該倉儲(chǔ)類型的對(duì)象。倉儲(chǔ)層,提供對(duì)應(yīng)不同數(shù)據(jù)庫(SQL Server、Oracle等)的數(shù)據(jù)庫訪問層。數(shù)據(jù)庫訪問層,直接與數(shù)據(jù)庫相連并對(duì)外提供增、刪、改、查等底層方法以供頂層調(diào)用,這里采用了微軟的Code First框架來實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的直接訪問,也就是數(shù)據(jù)訪問層。其中,基礎(chǔ)服務(wù)層和倉儲(chǔ)層都繼承了同一個(gè)接口IDataContextProvider,該接口在倉儲(chǔ)層得以實(shí)現(xiàn),從而實(shí)現(xiàn)了業(yè)務(wù)邏輯層、數(shù)據(jù)庫訪問層、數(shù)據(jù)庫三者之間的解耦。

    2.2 ?基礎(chǔ)服務(wù)層

    基礎(chǔ)服務(wù)層提供數(shù)據(jù)庫訪問層對(duì)外接口的定義和對(duì)內(nèi)數(shù)據(jù)訪問的管理,是業(yè)務(wù)邏輯層和數(shù)據(jù)庫訪問在邏輯上的中間連接層。

    如圖2所示,DataContextService為基礎(chǔ)服務(wù)層的核心抽象類,業(yè)務(wù)邏輯層(如:DomainObjectContext Service類)實(shí)現(xiàn)該類型,以訪問該業(yè)務(wù)邏輯模塊所提供的數(shù)據(jù)相關(guān)的操作。各個(gè)業(yè)務(wù)層模塊針對(duì)自身模塊的數(shù)據(jù)訪問服務(wù),必須繼承于該類。并重寫配置文件ConfigurationGuid,就可以實(shí)現(xiàn)通過配置文件探查到數(shù)據(jù)訪問層。本類為業(yè)務(wù)層和數(shù)據(jù)訪問層解耦提供基礎(chǔ)服務(wù)。該類實(shí)現(xiàn)了IDataContextService接口,IDataContextService接口中定義了一個(gè)GetRepository()方法返回了一個(gè)Repository泛型對(duì)象,該對(duì)象封裝了對(duì)數(shù)據(jù)庫的增、刪、改、查方法,并繼承了IQueryable即支持linq查詢。

    DataContextService里面ConfigureSectionName是配置文件配置節(jié)的名稱。當(dāng)實(shí)現(xiàn)DataContextService的擴(kuò)展類探查到數(shù)據(jù)庫訪問層后,將返回的倉儲(chǔ)對(duì)象與自己索引起來存入Dictionary(索引容器)里面,下次探查對(duì)應(yīng)倉儲(chǔ)對(duì)象時(shí)就不需要再通過反射獲取對(duì)象,這樣可以提高代碼運(yùn)行效率,本文的設(shè)計(jì)中多次用到這種方式來提升模塊性能。返回的倉儲(chǔ)對(duì)象才真正實(shí)現(xiàn)GetRepository()方法。

    2.3 ?倉儲(chǔ)層

    倉儲(chǔ)層為基礎(chǔ)服務(wù)層提供對(duì)應(yīng)服務(wù),Code first是以Dbcontext模型為容器把實(shí)體對(duì)象和數(shù)據(jù)庫建立起鏈接的,不同的實(shí)體對(duì)象可能屬于不同的容器,倉儲(chǔ)層就實(shí)現(xiàn)了具體的實(shí)體對(duì)象和對(duì)應(yīng)的Dbcontext模型索引。

    如圖3所示,DataContextProvider為倉儲(chǔ)層的核心抽象類,實(shí)際的倉儲(chǔ)類(如DomainObjectContext Provider類)繼承該類型并實(shí)現(xiàn)CreateDbContextCore()虛方法,以提供該倉儲(chǔ)類對(duì)應(yīng)數(shù)據(jù)庫訪問層即對(duì)應(yīng)的DbContext的擴(kuò)展類。DbContext的擴(kuò)展類是讀數(shù)據(jù)庫訪問方法的最終提供者,EFRepository 類通過傳入不同的DbContext擴(kuò)展類實(shí)現(xiàn)了IRepository接口。

    圖3 倉儲(chǔ)層結(jié)構(gòu)

    2.4 ?數(shù)據(jù)訪問層

    數(shù)據(jù)訪問層實(shí)現(xiàn)了一套對(duì)不同的實(shí)體對(duì)象自動(dòng)生成對(duì)應(yīng)Dbcontext模型的機(jī)制,這樣外部業(yè)務(wù)邏輯層使用本模塊,通過泛型參數(shù)傳入實(shí)體類型,該機(jī)制就會(huì)對(duì)其自動(dòng)生成屬于這個(gè)實(shí)體的Dbcontext模型。

    如圖4所示,該層基于EF的Code first方式配置模型實(shí)現(xiàn)對(duì)數(shù)據(jù)庫的訪問,DbContext繼承DbContext,重寫了數(shù)據(jù)庫鏈接字符串,并修改了EF庫對(duì)多個(gè)DbContext擴(kuò)展類訪問同一數(shù)據(jù)庫沖突的漏洞,且實(shí)現(xiàn)了數(shù)據(jù)遷移特性即當(dāng)實(shí)體類里有字段變化時(shí),這種變化能自動(dòng)移植到對(duì)應(yīng)的數(shù)據(jù)表列。然后用戶可以繼承DbContext類根據(jù)自身的需求配置不同的實(shí)體對(duì)象執(zhí)行上下文環(huán)境,并向上提供給對(duì)應(yīng)倉儲(chǔ)類。目前DbContext已支持Sqlserver之外的數(shù)據(jù)庫如Oracle,所以通過配置甚至可以實(shí)現(xiàn)對(duì)Oracle數(shù)據(jù)庫的訪問支持。

    3 ?應(yīng)用研究

    本文實(shí)現(xiàn)的數(shù)據(jù)庫訪問模塊主要目的在于實(shí)際應(yīng)用,為了更直接地展示其使用的快捷、簡(jiǎn)單,下面通過實(shí)際例子加以說明。

    圖4 數(shù)據(jù)訪問層

    先定義一個(gè)實(shí)體類Person,繼承于DomainObject。這里DomainObject類只有一個(gè)Guid類型的字段。本模塊設(shè)計(jì)時(shí)對(duì)實(shí)體類做出了限制:任何實(shí)體類只有繼承于DomainObject類才能被映射到數(shù)據(jù)庫。

    public class Person:DomainObject {

    public string Name { get; set; }

    public int Age { get; set; }

    }

    打開VS開發(fā)環(huán)境,建立一個(gè)控制臺(tái)應(yīng)用,添加以下代碼:

    DomainObjectDataContextService.UsingDataContext( );

    Person me = new Person( ) { Name="張三",Age=24};

    using (var persons = DomainObjectDataContextService.Instance.GetRepository( )){

    persons.Add(me);

    persons.Save( );

    }

    如圖5所示,在這段代碼執(zhí)行之前在數(shù)據(jù)庫里沒有任何數(shù)據(jù)庫以及表。運(yùn)行之后,在數(shù)據(jù)庫里可以看到如圖6結(jié)果,增加了YUNGO_SYS_DB2數(shù)據(jù)庫和People數(shù)據(jù)表以及一條新的記錄。

    <\\192.168.6.11\現(xiàn)代電子技術(shù)14年37卷第24期\Image\17T5.tif>

    圖5 執(zhí)行前數(shù)據(jù)庫

    刪除記錄操作代碼示例:

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    persons.Remove(p.First());

    persons.Save();

    }

    查詢數(shù)據(jù)庫操作代碼示例

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    string name = p.First().Name;

    int age = p.First().Age;

    }

    改記錄操作代碼示例

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    p.First().Age=20;

    persons.Save(); ? ? ?}

    總的來說,通過實(shí)體框架的對(duì)象層,可以執(zhí)行以下任務(wù):針對(duì)概念模型運(yùn)行查詢;跟蹤針對(duì)對(duì)象做所需的更改;將對(duì)象更改傳播回?cái)?shù)據(jù)源;將對(duì)象綁定到控件。

    圖6 執(zhí)行后數(shù)據(jù)庫

    4 ?結(jié) ?語

    本文詳細(xì)分析了數(shù)據(jù)庫訪問機(jī)制的各部分結(jié)構(gòu),并介紹了應(yīng)用方法。該機(jī)制缺點(diǎn)是不支持存儲(chǔ)過程,優(yōu)點(diǎn)是在進(jìn)行數(shù)據(jù)庫操作時(shí)不需要建表,大量需要手動(dòng)書寫代碼配置的映射關(guān)系通過泛型可以自動(dòng)生成;高度封裝對(duì)外公開有限接口,所以使用時(shí)操作簡(jiǎn)單;代碼結(jié)構(gòu)清晰,各部分模塊化程度高,繼承體系完美,所以擴(kuò)展性強(qiáng),對(duì)于需定制的映射關(guān)系,修改方便。

    參考文獻(xiàn)

    [1] 袁立國,陳中育,李方鵬,等.一種軟件開發(fā)框架的設(shè)計(jì)優(yōu)化[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(5):70?74.

    [2] 盧小垂.基于.NET平臺(tái)的ORM輕量級(jí)開發(fā)框架的設(shè)計(jì)與實(shí)現(xiàn)[J].電信快報(bào),2012(10):10?16.

    [3] 趙亮.使用Entity Framework 快速開發(fā)ASQ.NET網(wǎng)站[J].企業(yè)導(dǎo)報(bào),2012(18):269?270.

    [4] 黃睿.基于Java技術(shù)的ORM工具接口的設(shè)計(jì)與實(shí)現(xiàn)[D].長春:吉林大學(xué),2012.

    [5] LERMAN Julia, MILLER Rowan. Programming entity framework: DbContext [M]. America: O'Reilly Media, 2012.

    [6] 謝日星.Entity Framework技術(shù)在分層架構(gòu)中應(yīng)用研究[J].電腦知識(shí)與技術(shù),2011(15):3326?3327.

    [7] LERMAN Julia, MILLER Rowan. Programming Entity Framework: code first [M]. America: O'Reilly Media, 2012.

    [8] 趙增敏,吳潔,唐惠康.基于Code First模式的ASP.NET MVC應(yīng)用開發(fā)[J].制造業(yè)自動(dòng)化,2012,34(3):154?156.

    }

    打開VS開發(fā)環(huán)境,建立一個(gè)控制臺(tái)應(yīng)用,添加以下代碼:

    DomainObjectDataContextService.UsingDataContext( );

    Person me = new Person( ) { Name="張三",Age=24};

    using (var persons = DomainObjectDataContextService.Instance.GetRepository( )){

    persons.Add(me);

    persons.Save( );

    }

    如圖5所示,在這段代碼執(zhí)行之前在數(shù)據(jù)庫里沒有任何數(shù)據(jù)庫以及表。運(yùn)行之后,在數(shù)據(jù)庫里可以看到如圖6結(jié)果,增加了YUNGO_SYS_DB2數(shù)據(jù)庫和People數(shù)據(jù)表以及一條新的記錄。

    <\\192.168.6.11\現(xiàn)代電子技術(shù)14年37卷第24期\Image\17T5.tif>

    圖5 執(zhí)行前數(shù)據(jù)庫

    刪除記錄操作代碼示例:

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    persons.Remove(p.First());

    persons.Save();

    }

    查詢數(shù)據(jù)庫操作代碼示例

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    string name = p.First().Name;

    int age = p.First().Age;

    }

    改記錄操作代碼示例

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    p.First().Age=20;

    persons.Save(); ? ? ?}

    總的來說,通過實(shí)體框架的對(duì)象層,可以執(zhí)行以下任務(wù):針對(duì)概念模型運(yùn)行查詢;跟蹤針對(duì)對(duì)象做所需的更改;將對(duì)象更改傳播回?cái)?shù)據(jù)源;將對(duì)象綁定到控件。

    圖6 執(zhí)行后數(shù)據(jù)庫

    4 ?結(jié) ?語

    本文詳細(xì)分析了數(shù)據(jù)庫訪問機(jī)制的各部分結(jié)構(gòu),并介紹了應(yīng)用方法。該機(jī)制缺點(diǎn)是不支持存儲(chǔ)過程,優(yōu)點(diǎn)是在進(jìn)行數(shù)據(jù)庫操作時(shí)不需要建表,大量需要手動(dòng)書寫代碼配置的映射關(guān)系通過泛型可以自動(dòng)生成;高度封裝對(duì)外公開有限接口,所以使用時(shí)操作簡(jiǎn)單;代碼結(jié)構(gòu)清晰,各部分模塊化程度高,繼承體系完美,所以擴(kuò)展性強(qiáng),對(duì)于需定制的映射關(guān)系,修改方便。

    參考文獻(xiàn)

    [1] 袁立國,陳中育,李方鵬,等.一種軟件開發(fā)框架的設(shè)計(jì)優(yōu)化[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(5):70?74.

    [2] 盧小垂.基于.NET平臺(tái)的ORM輕量級(jí)開發(fā)框架的設(shè)計(jì)與實(shí)現(xiàn)[J].電信快報(bào),2012(10):10?16.

    [3] 趙亮.使用Entity Framework 快速開發(fā)ASQ.NET網(wǎng)站[J].企業(yè)導(dǎo)報(bào),2012(18):269?270.

    [4] 黃睿.基于Java技術(shù)的ORM工具接口的設(shè)計(jì)與實(shí)現(xiàn)[D].長春:吉林大學(xué),2012.

    [5] LERMAN Julia, MILLER Rowan. Programming entity framework: DbContext [M]. America: O'Reilly Media, 2012.

    [6] 謝日星.Entity Framework技術(shù)在分層架構(gòu)中應(yīng)用研究[J].電腦知識(shí)與技術(shù),2011(15):3326?3327.

    [7] LERMAN Julia, MILLER Rowan. Programming Entity Framework: code first [M]. America: O'Reilly Media, 2012.

    [8] 趙增敏,吳潔,唐惠康.基于Code First模式的ASP.NET MVC應(yīng)用開發(fā)[J].制造業(yè)自動(dòng)化,2012,34(3):154?156.

    }

    打開VS開發(fā)環(huán)境,建立一個(gè)控制臺(tái)應(yīng)用,添加以下代碼:

    DomainObjectDataContextService.UsingDataContext( );

    Person me = new Person( ) { Name="張三",Age=24};

    using (var persons = DomainObjectDataContextService.Instance.GetRepository( )){

    persons.Add(me);

    persons.Save( );

    }

    如圖5所示,在這段代碼執(zhí)行之前在數(shù)據(jù)庫里沒有任何數(shù)據(jù)庫以及表。運(yùn)行之后,在數(shù)據(jù)庫里可以看到如圖6結(jié)果,增加了YUNGO_SYS_DB2數(shù)據(jù)庫和People數(shù)據(jù)表以及一條新的記錄。

    <\\192.168.6.11\現(xiàn)代電子技術(shù)14年37卷第24期\Image\17T5.tif>

    圖5 執(zhí)行前數(shù)據(jù)庫

    刪除記錄操作代碼示例:

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    persons.Remove(p.First());

    persons.Save();

    }

    查詢數(shù)據(jù)庫操作代碼示例

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    string name = p.First().Name;

    int age = p.First().Age;

    }

    改記錄操作代碼示例

    using (var persons = DomainObjectDataContextService.Instance.GetRepository()){

    var p = from person in persons

    where person.Name == "張三"

    select person;

    p.First().Age=20;

    persons.Save(); ? ? ?}

    總的來說,通過實(shí)體框架的對(duì)象層,可以執(zhí)行以下任務(wù):針對(duì)概念模型運(yùn)行查詢;跟蹤針對(duì)對(duì)象做所需的更改;將對(duì)象更改傳播回?cái)?shù)據(jù)源;將對(duì)象綁定到控件。

    圖6 執(zhí)行后數(shù)據(jù)庫

    4 ?結(jié) ?語

    本文詳細(xì)分析了數(shù)據(jù)庫訪問機(jī)制的各部分結(jié)構(gòu),并介紹了應(yīng)用方法。該機(jī)制缺點(diǎn)是不支持存儲(chǔ)過程,優(yōu)點(diǎn)是在進(jìn)行數(shù)據(jù)庫操作時(shí)不需要建表,大量需要手動(dòng)書寫代碼配置的映射關(guān)系通過泛型可以自動(dòng)生成;高度封裝對(duì)外公開有限接口,所以使用時(shí)操作簡(jiǎn)單;代碼結(jié)構(gòu)清晰,各部分模塊化程度高,繼承體系完美,所以擴(kuò)展性強(qiáng),對(duì)于需定制的映射關(guān)系,修改方便。

    參考文獻(xiàn)

    [1] 袁立國,陳中育,李方鵬,等.一種軟件開發(fā)框架的設(shè)計(jì)優(yōu)化[J].計(jì)算機(jī)系統(tǒng)應(yīng)用,2013,22(5):70?74.

    [2] 盧小垂.基于.NET平臺(tái)的ORM輕量級(jí)開發(fā)框架的設(shè)計(jì)與實(shí)現(xiàn)[J].電信快報(bào),2012(10):10?16.

    [3] 趙亮.使用Entity Framework 快速開發(fā)ASQ.NET網(wǎng)站[J].企業(yè)導(dǎo)報(bào),2012(18):269?270.

    [4] 黃睿.基于Java技術(shù)的ORM工具接口的設(shè)計(jì)與實(shí)現(xiàn)[D].長春:吉林大學(xué),2012.

    [5] LERMAN Julia, MILLER Rowan. Programming entity framework: DbContext [M]. America: O'Reilly Media, 2012.

    [6] 謝日星.Entity Framework技術(shù)在分層架構(gòu)中應(yīng)用研究[J].電腦知識(shí)與技術(shù),2011(15):3326?3327.

    [7] LERMAN Julia, MILLER Rowan. Programming Entity Framework: code first [M]. America: O'Reilly Media, 2012.

    [8] 趙增敏,吳潔,唐惠康.基于Code First模式的ASP.NET MVC應(yīng)用開發(fā)[J].制造業(yè)自動(dòng)化,2012,34(3):154?156.

    猜你喜歡
    接口數(shù)據(jù)庫
    數(shù)據(jù)庫
    數(shù)據(jù)庫
    現(xiàn)場(chǎng)采購代表與總部及現(xiàn)場(chǎng)各部門的接口關(guān)系
    某電站工程設(shè)計(jì)管理與施工、質(zhì)量控制接口關(guān)系研究
    脫硝數(shù)據(jù)傳輸系統(tǒng)遠(yuǎn)程無線監(jiān)控技術(shù)的研發(fā)與應(yīng)用
    中文信息(2016年10期)2016-12-12 12:56:55
    西門子SPPA—T3000在委內(nèi)瑞拉燃機(jī)電廠中的應(yīng)用與接口
    數(shù)據(jù)庫
    居家環(huán)境監(jiān)測(cè)系統(tǒng)研究
    數(shù)據(jù)庫
    中俄網(wǎng)絡(luò)語言編碼接口問題的研究
    科技視界(2016年3期)2016-02-26 10:14:32
    国产亚洲精品久久久com| 可以在线观看毛片的网站| 一级爰片在线观看| 看十八女毛片水多多多| 国产午夜精品久久久久久一区二区三区| 在线免费观看的www视频| 亚洲国产欧美人成| 嫩草影院新地址| 男人爽女人下面视频在线观看| 国产单亲对白刺激| 久久精品熟女亚洲av麻豆精品 | freevideosex欧美| 国产欧美另类精品又又久久亚洲欧美| 亚洲aⅴ乱码一区二区在线播放| 国产片特级美女逼逼视频| 熟妇人妻不卡中文字幕| 小蜜桃在线观看免费完整版高清| 亚洲av日韩在线播放| 精品久久久久久久久亚洲| 激情五月婷婷亚洲| 97精品久久久久久久久久精品| 亚洲av在线观看美女高潮| 中国美白少妇内射xxxbb| 美女脱内裤让男人舔精品视频| 男女边摸边吃奶| 我的老师免费观看完整版| 精品国产超薄肉色丝袜足j| h视频一区二区三区| 少妇 在线观看| 国产精品熟女久久久久浪| 热99国产精品久久久久久7| 婷婷色综合www| 亚洲四区av| www日本在线高清视频| 人妻人人澡人人爽人人| 亚洲婷婷狠狠爱综合网| 国精品久久久久久国模美| av国产精品久久久久影院| videossex国产| 国产片特级美女逼逼视频| 人妻少妇偷人精品九色| 男女无遮挡免费网站观看| 99国产综合亚洲精品| 国产一区二区三区av在线| 97在线视频观看| 老司机亚洲免费影院| 黑人巨大精品欧美一区二区蜜桃| 亚洲经典国产精华液单| 日本wwww免费看| 久久久久久久精品精品| 韩国精品一区二区三区| 国产免费福利视频在线观看| 大片电影免费在线观看免费| 不卡av一区二区三区| 欧美av亚洲av综合av国产av | 天天操日日干夜夜撸| 精品一区二区免费观看| 咕卡用的链子| 日韩视频在线欧美| 婷婷色麻豆天堂久久| 中文字幕最新亚洲高清| 欧美 日韩 精品 国产| 成年人免费黄色播放视频| 成人黄色视频免费在线看| 天堂8中文在线网| 精品国产超薄肉色丝袜足j| 99re6热这里在线精品视频| 中文欧美无线码| 久久人人爽av亚洲精品天堂| 婷婷色av中文字幕| 国产高清不卡午夜福利| 国产亚洲欧美精品永久| 韩国高清视频一区二区三区| 岛国毛片在线播放| 亚洲成国产人片在线观看| 日韩免费高清中文字幕av| 久久久a久久爽久久v久久| 日本-黄色视频高清免费观看| 777米奇影视久久| 久久热在线av| 一级黄片播放器| 国产免费又黄又爽又色| 久久精品人人爽人人爽视色| 亚洲国产欧美在线一区| 午夜激情av网站| 午夜免费男女啪啪视频观看| 欧美人与性动交α欧美精品济南到 | 日本猛色少妇xxxxx猛交久久| www日本在线高清视频| 在线观看免费视频网站a站| 成人毛片60女人毛片免费| 在线观看三级黄色| 一区二区三区激情视频| 欧美激情极品国产一区二区三区| 亚洲av成人精品一二三区| 毛片一级片免费看久久久久| 久久精品国产鲁丝片午夜精品| 美女脱内裤让男人舔精品视频| av又黄又爽大尺度在线免费看| 免费在线观看视频国产中文字幕亚洲 | 亚洲精品久久久久久婷婷小说| 制服人妻中文乱码| 丝袜在线中文字幕| 亚洲欧美精品自产自拍| 美女xxoo啪啪120秒动态图| 啦啦啦啦在线视频资源| 90打野战视频偷拍视频| 亚洲av福利一区| 黄色视频在线播放观看不卡| 国产欧美亚洲国产| 欧美精品国产亚洲| 超碰97精品在线观看| 大香蕉久久网| 国产成人精品婷婷| 最近的中文字幕免费完整| 国产毛片在线视频| 亚洲av男天堂| 在现免费观看毛片| av视频免费观看在线观看| 黄片无遮挡物在线观看| 亚洲成人手机| 另类亚洲欧美激情| 久久免费观看电影| 色哟哟·www| 亚洲av免费高清在线观看| 久热这里只有精品99| 国产极品天堂在线| av国产久精品久网站免费入址| 欧美av亚洲av综合av国产av | 国产亚洲欧美精品永久| 欧美成人精品欧美一级黄| 久久国产精品大桥未久av| 777米奇影视久久| 亚洲精品成人av观看孕妇| 99国产精品免费福利视频| 久久精品久久久久久噜噜老黄| 午夜91福利影院| 青春草视频在线免费观看| 婷婷色麻豆天堂久久| 亚洲 欧美一区二区三区| 国产在线一区二区三区精| 国产免费福利视频在线观看| av国产精品久久久久影院| 极品少妇高潮喷水抽搐| 日产精品乱码卡一卡2卡三| 久久久久久久精品精品| 欧美精品高潮呻吟av久久| 伊人亚洲综合成人网| 亚洲情色 制服丝袜| 欧美日韩视频精品一区| 国产精品无大码| 国产精品三级大全| 午夜91福利影院| 999久久久国产精品视频| 18+在线观看网站| 成年美女黄网站色视频大全免费| 日韩精品有码人妻一区| 久久97久久精品| 久热久热在线精品观看| 宅男免费午夜| 精品福利永久在线观看| 一级,二级,三级黄色视频| 一本色道久久久久久精品综合| 日日摸夜夜添夜夜爱| 国产成人aa在线观看| 天天影视国产精品| 久久女婷五月综合色啪小说| 国产精品无大码| 日日撸夜夜添| 免费观看性生交大片5| 在线观看人妻少妇| 欧美亚洲 丝袜 人妻 在线| 黄色毛片三级朝国网站| 男人添女人高潮全过程视频| 国产极品粉嫩免费观看在线| 在线免费观看不下载黄p国产| 亚洲精品美女久久av网站| 色婷婷av一区二区三区视频| 国产乱来视频区| 成人亚洲欧美一区二区av| 高清av免费在线| 超碰97精品在线观看| 丝袜美腿诱惑在线| 搡老乐熟女国产| www.自偷自拍.com| 亚洲人成电影观看| av不卡在线播放| av视频免费观看在线观看| 一级毛片黄色毛片免费观看视频| 亚洲图色成人| www.自偷自拍.com| 欧美老熟妇乱子伦牲交| 亚洲欧美精品自产自拍| 国产欧美日韩综合在线一区二区| 久久热在线av| 久久精品夜色国产| 亚洲第一av免费看| 精品国产一区二区三区久久久樱花| 少妇人妻 视频| 美女xxoo啪啪120秒动态图| 亚洲一区中文字幕在线| 久久久a久久爽久久v久久| 亚洲在久久综合| 久久99精品国语久久久| 国产片内射在线| 亚洲五月色婷婷综合| 国产成人精品一,二区| a 毛片基地| 午夜久久久在线观看| 久久久国产精品麻豆| 一级毛片黄色毛片免费观看视频| 一区二区av电影网| 两个人看的免费小视频| 一二三四在线观看免费中文在| 国产一区有黄有色的免费视频| 国产成人一区二区在线| 天堂中文最新版在线下载| 成人国产av品久久久| 久久精品人人爽人人爽视色| 日本色播在线视频| 欧美日韩视频高清一区二区三区二| 国产精品久久久久久精品电影小说| 欧美97在线视频| 制服丝袜香蕉在线| 可以免费在线观看a视频的电影网站 | 国产精品无大码| 国产免费视频播放在线视频| 女的被弄到高潮叫床怎么办| 久久av网站| 国产精品亚洲av一区麻豆 | 久久久久精品人妻al黑| 亚洲欧洲精品一区二区精品久久久 | 一边摸一边做爽爽视频免费| 亚洲欧美精品自产自拍| 一二三四中文在线观看免费高清| 人人妻人人爽人人添夜夜欢视频| 大片电影免费在线观看免费| 精品亚洲成国产av| 99热国产这里只有精品6| 欧美日韩精品网址| 亚洲欧美精品自产自拍| 性色avwww在线观看| 亚洲成av片中文字幕在线观看 | 久久精品国产a三级三级三级| 午夜日本视频在线| 丝袜脚勾引网站| 亚洲成色77777| 国产片内射在线| 老女人水多毛片| 国产精品一国产av| 亚洲精品成人av观看孕妇| 免费观看av网站的网址| 丝袜美足系列| 久久鲁丝午夜福利片| 亚洲精品国产一区二区精华液| 纯流量卡能插随身wifi吗| 午夜日本视频在线| 九色亚洲精品在线播放| 欧美xxⅹ黑人| 春色校园在线视频观看| 人人妻人人澡人人爽人人夜夜| 丰满迷人的少妇在线观看| 巨乳人妻的诱惑在线观看| 看非洲黑人一级黄片| 秋霞在线观看毛片| 欧美精品人与动牲交sv欧美| 一区二区三区四区激情视频| 久久久国产欧美日韩av| 欧美日韩一区二区视频在线观看视频在线| 熟女电影av网| 精品国产超薄肉色丝袜足j| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 亚洲国产色片| 国产色婷婷99| 日本色播在线视频| 老司机影院成人| 亚洲欧美色中文字幕在线| 尾随美女入室| 在线看a的网站| 精品久久久久久电影网| 国产男女内射视频| 日本wwww免费看| 亚洲av电影在线观看一区二区三区| 国产一级毛片在线| 国产精品.久久久| 最新中文字幕久久久久| 王馨瑶露胸无遮挡在线观看| 亚洲第一av免费看| 亚洲激情五月婷婷啪啪| www.熟女人妻精品国产| 天堂俺去俺来也www色官网| 欧美日本中文国产一区发布| 视频区图区小说| 日韩免费高清中文字幕av| 美女午夜性视频免费| 美女大奶头黄色视频| 国产一区二区 视频在线| 午夜精品国产一区二区电影| 亚洲人成77777在线视频| 精品久久蜜臀av无| 欧美日韩精品网址| 免费大片黄手机在线观看| av片东京热男人的天堂| 国产在视频线精品| 18+在线观看网站| 亚洲欧洲国产日韩| 国产黄色视频一区二区在线观看| 黄色一级大片看看| 国产成人精品婷婷| 欧美 日韩 精品 国产| 性高湖久久久久久久久免费观看| 最新中文字幕久久久久| 欧美日韩精品网址| 亚洲精华国产精华液的使用体验| 男的添女的下面高潮视频| 黄片播放在线免费| 久久久久久久国产电影| 女性生殖器流出的白浆| 成人国语在线视频| 欧美日韩精品网址| 国产精品国产av在线观看| 日韩中字成人| 超碰成人久久| 亚洲人成网站在线观看播放| 久久99精品国语久久久| 精品少妇内射三级| 国产免费又黄又爽又色| 丝袜人妻中文字幕| 精品少妇内射三级| 午夜免费男女啪啪视频观看| 久久久久久伊人网av| 亚洲五月色婷婷综合| 永久免费av网站大全| 高清欧美精品videossex| 免费高清在线观看日韩| 久久精品国产综合久久久| 亚洲中文av在线| 一区二区三区四区激情视频| 女人久久www免费人成看片| av在线播放精品| 不卡视频在线观看欧美| av在线播放精品| 老汉色av国产亚洲站长工具| 久久精品久久精品一区二区三区| 久久久久国产网址| 中文字幕av电影在线播放| 99国产精品免费福利视频| 亚洲国产精品一区三区| 99国产精品免费福利视频| 久久综合国产亚洲精品| 不卡视频在线观看欧美| 精品少妇久久久久久888优播| 深夜精品福利| 啦啦啦中文免费视频观看日本| 国产毛片在线视频| 久久精品久久精品一区二区三区| 美女高潮到喷水免费观看| 久久精品久久精品一区二区三区| 精品酒店卫生间| 一区二区三区四区激情视频| 久久久国产精品麻豆| 精品少妇久久久久久888优播| 精品视频人人做人人爽| 少妇被粗大猛烈的视频| 国产精品99久久99久久久不卡 | 免费在线观看黄色视频的| 啦啦啦视频在线资源免费观看| 一个人免费看片子| av免费观看日本| 久久精品国产综合久久久| 美女午夜性视频免费| 日韩伦理黄色片| 99热全是精品| 国产av码专区亚洲av| 日韩av免费高清视频| 亚洲三区欧美一区| 午夜福利在线免费观看网站| 国产激情久久老熟女| 另类精品久久| 成人亚洲精品一区在线观看| 一级毛片电影观看| av线在线观看网站| 美女大奶头黄色视频| 成人影院久久| 国产野战对白在线观看| 国产一区二区三区av在线| 国产精品熟女久久久久浪| 老汉色av国产亚洲站长工具| 亚洲一级一片aⅴ在线观看| 亚洲精品在线美女| 制服丝袜香蕉在线| 日韩成人av中文字幕在线观看| 亚洲精品国产av成人精品| 中文字幕制服av| 最近的中文字幕免费完整| 男女无遮挡免费网站观看| 欧美人与性动交α欧美精品济南到 | 只有这里有精品99| 老司机影院成人| 在线天堂中文资源库| 久久久久久久久免费视频了| 亚洲国产看品久久| 亚洲av男天堂| 国产爽快片一区二区三区| 亚洲精品视频女| xxxhd国产人妻xxx| 久久狼人影院| 精品一区二区免费观看| 亚洲国产成人一精品久久久| 日韩一本色道免费dvd| 91精品国产国语对白视频| 久久精品国产a三级三级三级| 国产精品偷伦视频观看了| 亚洲精品国产av成人精品| 亚洲成av片中文字幕在线观看 | 男人爽女人下面视频在线观看| 日韩,欧美,国产一区二区三区| 精品午夜福利在线看| 亚洲国产欧美日韩在线播放| 91午夜精品亚洲一区二区三区| 观看av在线不卡| 欧美 亚洲 国产 日韩一| 久久久国产精品麻豆| 男女国产视频网站| 啦啦啦啦在线视频资源| 黄频高清免费视频| videossex国产| 成人亚洲精品一区在线观看| 夫妻午夜视频| 国产一区有黄有色的免费视频| 亚洲av中文av极速乱| 美女国产高潮福利片在线看| 国产成人一区二区在线| 免费av中文字幕在线| 男女午夜视频在线观看| 亚洲av成人精品一二三区| 国产精品久久久久久久久免| 久久99蜜桃精品久久| 26uuu在线亚洲综合色| 美女福利国产在线| 国产午夜精品一二区理论片| 777米奇影视久久| 成年av动漫网址| 中文字幕另类日韩欧美亚洲嫩草| 一区二区三区四区激情视频| 捣出白浆h1v1| 精品第一国产精品| 少妇被粗大的猛进出69影院| 成人国产av品久久久| 99re6热这里在线精品视频| 免费久久久久久久精品成人欧美视频| 午夜影院在线不卡| 免费不卡的大黄色大毛片视频在线观看| 久久久久久久大尺度免费视频| av在线观看视频网站免费| 久久久久国产精品人妻一区二区| 国产乱人偷精品视频| 久久av网站| 亚洲综合色网址| 亚洲欧美色中文字幕在线| 99热网站在线观看| 精品亚洲成国产av| 69精品国产乱码久久久| 免费黄色在线免费观看| 亚洲av欧美aⅴ国产| 日韩免费高清中文字幕av| 久久久久久久久久人人人人人人| 国产一区二区 视频在线| 日韩电影二区| 国产成人免费观看mmmm| 女人高潮潮喷娇喘18禁视频| 久久精品久久久久久噜噜老黄| 人妻系列 视频| 2022亚洲国产成人精品| 国产精品嫩草影院av在线观看| 久久精品人人爽人人爽视色| 黄片播放在线免费| 国产毛片在线视频| 亚洲精品国产色婷婷电影| 久久精品熟女亚洲av麻豆精品| 男女边吃奶边做爰视频| 久久婷婷青草| 自拍欧美九色日韩亚洲蝌蚪91| 韩国精品一区二区三区| 极品人妻少妇av视频| 欧美成人午夜免费资源| av福利片在线| 精品国产超薄肉色丝袜足j| 亚洲美女黄色视频免费看| 麻豆精品久久久久久蜜桃| 两性夫妻黄色片| 亚洲av免费高清在线观看| 欧美日韩综合久久久久久| 性色avwww在线观看| 精品国产露脸久久av麻豆| 国产成人a∨麻豆精品| 国产成人精品福利久久| 卡戴珊不雅视频在线播放| 午夜福利在线免费观看网站| 高清欧美精品videossex| 亚洲第一区二区三区不卡| 咕卡用的链子| 精品酒店卫生间| 亚洲婷婷狠狠爱综合网| 美女高潮到喷水免费观看| 91在线精品国自产拍蜜月| 精品少妇黑人巨大在线播放| 日本av手机在线免费观看| 伦精品一区二区三区| 亚洲国产精品一区三区| 久久久欧美国产精品| 免费久久久久久久精品成人欧美视频| 一区二区日韩欧美中文字幕| 有码 亚洲区| 天天躁狠狠躁夜夜躁狠狠躁| 97在线人人人人妻| 99香蕉大伊视频| 蜜桃国产av成人99| 欧美精品一区二区大全| 秋霞在线观看毛片| 哪个播放器可以免费观看大片| 久久人人97超碰香蕉20202| 一区二区av电影网| 久久精品国产鲁丝片午夜精品| 欧美日韩精品成人综合77777| 国产无遮挡羞羞视频在线观看| 男女下面插进去视频免费观看| 国产精品嫩草影院av在线观看| 亚洲成人av在线免费| www日本在线高清视频| 国产女主播在线喷水免费视频网站| 亚洲国产色片| 视频在线观看一区二区三区| 最近2019中文字幕mv第一页| 一本一本久久a久久精品综合妖精 国产伦在线观看视频一区 | 伦理电影免费视频| 亚洲欧美成人精品一区二区| 在线观看美女被高潮喷水网站| 黄色一级大片看看| 精品卡一卡二卡四卡免费| 女性生殖器流出的白浆| 色播在线永久视频| 99国产综合亚洲精品| 一区二区三区乱码不卡18| 久久99一区二区三区| 国产老妇伦熟女老妇高清| 免费女性裸体啪啪无遮挡网站| 丰满少妇做爰视频| 交换朋友夫妻互换小说| 黄网站色视频无遮挡免费观看| 久久久久精品久久久久真实原创| 三上悠亚av全集在线观看| 亚洲欧美成人综合另类久久久| www.自偷自拍.com| 国产精品亚洲av一区麻豆 | 黄色配什么色好看| 久久97久久精品| 90打野战视频偷拍视频| 亚洲欧美一区二区三区久久| 色网站视频免费| 免费在线观看视频国产中文字幕亚洲 | 国产精品二区激情视频| av在线播放精品| 亚洲av电影在线进入| 久久国内精品自在自线图片| 伊人亚洲综合成人网| 超碰成人久久| 美女大奶头黄色视频| 亚洲五月色婷婷综合| 这个男人来自地球电影免费观看 | 建设人人有责人人尽责人人享有的| 男人操女人黄网站| 啦啦啦啦在线视频资源| 日韩中字成人| 国产乱人偷精品视频| 一本—道久久a久久精品蜜桃钙片| 日本欧美视频一区| 中文精品一卡2卡3卡4更新| 免费看不卡的av| 久久久久久久精品精品| 免费大片黄手机在线观看| 人妻人人澡人人爽人人| 永久免费av网站大全| 天堂俺去俺来也www色官网| 婷婷色综合大香蕉| 丁香六月天网| 熟女少妇亚洲综合色aaa.| 日韩欧美一区视频在线观看| 久久久久人妻精品一区果冻| 免费大片黄手机在线观看| 欧美 亚洲 国产 日韩一| 这个男人来自地球电影免费观看 | 亚洲精品在线美女| 哪个播放器可以免费观看大片| 国产欧美日韩一区二区三区在线| 桃花免费在线播放| 人妻 亚洲 视频| 日日爽夜夜爽网站| 久久久国产精品麻豆| 9191精品国产免费久久| 国产福利在线免费观看视频| 免费黄色在线免费观看| 成人手机av| 999久久久国产精品视频| 一级片'在线观看视频| 18+在线观看网站| 最近中文字幕高清免费大全6| 免费观看av网站的网址| 曰老女人黄片| 久久精品亚洲av国产电影网| 纯流量卡能插随身wifi吗| av片东京热男人的天堂| 80岁老熟妇乱子伦牲交| 久久韩国三级中文字幕| 亚洲av欧美aⅴ国产|