天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

ORM映射框架總結--數據庫操作庫(精修版)

1.       ORM數據庫操作原理

前面已經介紹過了個人ORM映射框架中的三個核心庫:

實體數據庫 映射特性關系:

http://www.cnblogs.com/qingyuan/archive/2010/04/02/1702998.html

 實體分析器:

http://www.cnblogs.com/qingyuan/archive/2010/04/05/1704546.html

Sql 語句生成組建:

http://www.cnblogs.com/qingyuan/archive/2010/04/16/1713658.html

至于這篇文章也就是這四個組件中的最后一個了------- 數據庫操作庫。目前.NET 中對于數據庫操作的模板或組件太多了,先不說微軟的Linqto SQL,Linq to Entity, 還有開源組織的Hibernate克隆版NHibernate,以及前些天突然冒出來的ALinq, 號稱壓過Linq,有時間再研究一下。其實這些看是強大的組件框架,在其外表下面都是如出一轍,他們都是在ADO.NET中進行的封裝。

不過在這個數據庫操作中,都是ADO.NET進行數據庫操作,但是對于對象的查詢,都是泛化了的類型,也就是說我們不知道具體查詢的是那張表,或者說是查詢結果集是封裝到那個對象,這就是本文要解決的問題。

  2.       ADO.NET 介紹

感覺在這里進行ADO.NET的講解似乎是多次一舉,我相信ADO.NET是每個ASP.NET 程序員必會的基本技能。但是這里還是簡單介紹其五個核心對象吧。

Connection: Connection對象主要是開啟程序和數據庫之間的連結。沒有利用連結對象將數據庫打開,是無法從數據庫中取得數據的。

CommandCommand 對象主要可以用來對數據庫發出一些指令,例如可以對數據庫下達查詢、新增、修改、刪除數據等指令,以及呼叫存在數據庫中的預存程序等。

DataAdapter: DataSetCommand對象主要是在數據源以及DataSet 之間執行數據傳輸的工作,它可以透過Command 對象下達命令后,并將取得的數據放入DataSet 對象中。

DataSetDataSet 這個對象可以視為一個暫存區(Cache),可以把從數據庫中所查詢到的數據保留起來,甚至可以將整個數據庫顯示出來。DataSet 的能力不只是可以儲存多個Table 而已,還可以透過DataSetCommand 對象取得一些例如主鍵等的數據表結構,并可以記錄數據表間的關聯。DataSet 對象可以說是ADO.NET 中重量級的對象,這個對象架構在DataSetCommand 對象上,本身不具備和數據源溝通的能力。

DataReader: 當我們只需要循序的讀取數據而不需要其它操作時,可以使用DataReader 對象。DataReader對象只是一次一筆向下循序的讀取數據源中的數據,而且這些數據是只讀的,并不允許作其它的操作。因為DataReader 在讀取數據的時候限制了每次只讀取一筆,而且只能只讀,所以使用起來不但節省資源而且效率很好.

老生常談的說了一遍ADO.NET 的五個核心對象,這里主要目的是為了更好的了解此篇文章。我想現在用Linq to SQL , Linq to Entity 的人太多了,或許都忘記了ADO.NET 的基本操作,其實我本人也是如此,一段時間不是用好多忘記了,這里再次復習一遍ADO.NET 能更好的理解此篇文章。

  3.       數據庫加載驅動操作接口

該數據庫操作接口很簡單,就是封裝了一些數據庫操作的常用接口和命令,并定義了一些數據庫連接和關閉的方法,并控制了數據庫事務提交和回滾的方法。不過在這里的方法實現中我并沒有對事務進行處理,如果對本文有興趣的人可以在后期的文章中關注,我會對此進行補充。

下面簡單看看數據庫加載驅動接口:

數據庫加載驅動接口 1 /**
 2  * 2010-2-2
 3  * 
 4  * 情 緣
 5  * 
 6  * 數據庫提供加載驅動接口,該接口繼承IDisposable,
 7  * 用于釋放對象占用的內存。該接口定義了數據庫鏈接
 8  * 語句,鏈接對象,執行命令,適配器模式接口。同時
 9  * 還提供了打開數據庫連接和關閉的方法,還有三個方
10  * 法是用于控制數據庫操作事務
11  * 
12  * */
13 
14  using System;
15  using System.Collections.Generic;
16  using System.Linq;
17  using System.Text;
18  using System.Data;
19 
20  namespace CommonData.Data.Core
21 {
22     public interface IDbProvider:IDisposable
23     {
24         /// <summary>
25         /// 數據庫鏈接語句
26         /// </summary>
27          string ConnectionString { getset; }
28 
29         /// <summary>
30         /// 數據庫連接對象
31         /// </summary>
32          IDbConnection Connection { getset; }
33 
34         /// <summary>
35         /// 數據庫操作命令
36         /// </summary>
37          IDbCommand Command { getset; }
38 
39         /// <summary>
40         /// 數據庫操作適配器
41         /// </summary>
42          IDbDataAdapter Adapter { getset; }
43 
44         /// <summary>
45         /// 打開數據庫連接方法
46         /// </summary>
47          void Open();
48 
49         /// <summary>
50         /// 關閉數據庫連接方法
51         /// </summary>
52          void Close();
53 
54         /// <summary>
55         /// 開始事務控制方法
56         /// </summary>
57          void BeginTransaction();
58 
59         /// <summary>
60         /// 事務回滾方法
61         /// </summary>
62          void RollBack();
63 
64         /// <summary>
65         /// 事務提交方法
66         /// </summary>
67          void Commit();
68     }
69 }
70  

NET技術ORM映射框架總結--數據庫操作庫(精修版),轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 精品久久伊人 | 91久久线看在观草草青青 | 人人草影院| 亚洲a免费 | 最近中文字幕在线中文视频 | 黄色三级网站 | 男男h开荤粗肉h文1v1 | 国产色综合色产在线视频 | 99视频免视看 | 中文在线无码高潮潮喷在线 | 精品一卡2卡三卡4卡乱码精品视频 | 嗯啊哈啊好棒用力插啊 | 国家产午夜精品无人区 | 高h原耽肉汁动漫视频 | 婷婷五月久久丁香国产综合 | a圾片目录大全 | 亚洲精品成人无码A片在线 亚洲精品成人久久久影院 亚洲精品成人a在线观看 | 高h 大尺度纯肉 np快穿 | 色综合久久久久久 | 欧美片内射欧美美美妇 | 少妇邻居内射在线 | 亚洲人美女肛交真人全程 | 久久精品热线免费 | 性欧美FREE少妇XXX | 姑娘视频日本在线播放 | 成人免费视频无遮挡在线看 | 久久精品电影久久电影大全 | 综合人妻久久一区二区精品 | 欧美zozofoot | 亚洲xxxx动漫| 98久久无码一区人妻A片蜜 | 精品无码国产自产在线观看 | 亚洲AV久久久噜噜噜噜 | 欧美色妞AV重囗味视频 | xxxxx中国明星18 | 久久国产加勒比精品无码 | 日本撒尿特写 | 神马电影院午 夜理论 | 性夜夜春夜夜爽AA片A | 亚洲国产成人综合 | 一本色道久久综合亚洲精品加 |