天天看點

我的KT庫之----資料對象

了解或者認識KT:

<a href="http://www.cnblogs.com/kingthy/archive/2011/08/08/2130973.html">http://www.cnblogs.com/kingthy/archive/2011/08/08/2130973.html</a>

在項目中如何使用KT?

KT是一個庫,是以将KT的dll檔案引用到您的項目上即可使用KT裡的函數功能。

本節将介紹大家認識KT庫裡的資料對象(DbObject)。KT裡的資料對象是KT簡易ORM架構裡的一個對象角色,它存放于在“KT.Framework“下,當你已在你的項目裡引用了KT庫後,則寫下以下代碼就可以使用資料對象了。

什麼是資料對象

資料對象可用于簡單處理資料的存儲與互動,如将資料進行實體化處理。KT裡的資料對象DbObject對象類似于一個“字典”對象,添加到資料對象裡的資料都被放入内部的一個“槽”裡進行維護,如以下的代碼:

擴充資料對象

雖可以直接将資料對象當作一個字典對象使用,但很多場合下我們卻是需要将資料進行實體化處理,是以我們需要将資料對象進行擴充。如以下的代碼示例:

這樣擴充後,我們的資料對象User就是強類型的了,如下面的使用代碼示例:

有時我們的類裡需要使用到類内部的“字段”,則我們也可以将“字段”關聯到資料對象裡,如下面的擴充方法處理

我們通過“AddInternalData”方法,将Id字段加入到了資料對象裡,這樣我們就可以在資料對象裡使用”Id”資料了,如下面代碼

還有一種情況,有時對一種資料,我們多有種不同的名稱,比如“使用者名”,有時使用為“name“,有時又為“username“,比如以下兩句SQL語句

在第一句SQL語句裡,因為隻單純查詢使用者表,是以可以使用“name”做使用者的名稱,但在第二句SQL語句裡,為了差別使用者的資料,又采用了"username”做為使用者名資料,對于這種情況,我們也可以在資料對象裡進行擴充,如以下示例代碼

使用示例

資料對象的使用

在上面示例代碼裡,也許會有很多同學都會問“這樣的資料對象,看不出它的好處在哪裡,并且比直接寫一個類結構還更複雜”,是的,直接這樣使用資料對象,真的展現不出它的好處在哪裡,但如果将資料對象與“資料庫”挂上關系,那就可以展現資料對象的好處在哪裡了。比如我們的資料庫有這樣的兩個表

表1:User 使用者表

Id

int

Name

nvarchar(20)

Age

Phone

LocationId

表2:Location 位置表

UserId

City

nvarchar(30)

Address

nvarchar(200)

Zipcode

nvarchar(6)

現在我們需要擷取User表裡的資料,比如有以下的SQL語句

根據上表可以知道,這樣的查詢語句,将擷取到的資料共有5個(Id,Name,Age,Phone,LocationId),但如果将這些資料映射到某個實體類去,并且實作資料的一一對應,那我們就需要定義這5個屬性或字段,如下面的類

但假如我們現在在擷取使用者資料時還需要同時擷取使用者的位址位置資料,如以下的SQL語句

這條查詢語句我們共需要擷取Id,Name,City,Address,Zipcode這5個資料,很明顯,這裡的資料與上面的User類結構是不相同的,也就是如果需要将這條SQL語句映射為類對象,我們又需要建多一個類結構對象。也就是每當我們SQL語句有變化時,我們就需要增加不同的類對象,這樣對我們來說是非常麻煩且工作量是非常之大的。

如果我們使用資料對象來做資料映射,因為資料對象本來就是一個“字典”對象,是以不管我們的SQL語句如何變化,資料都是進入到資料對象裡的“槽”裡,再根據“擴充資料對象”反映到對象的“屬性”或“字段”裡。比如上面兩句SQL語句我們都可以将其映射為“擴充資料對象”那段裡定義的“DbUser”對象,對于未“擴充”的“Phone,LocationId,City,Address,Zipcode“等資料,我們則可以在需要時通過資料對象的“GetData&lt;T&gt;”方法擷取,如下:

從上面的示例中,我們可以看到DbObject有點類似于DataTable,确切的說應該是像DataRow,隻當一個相同的DbObject清單集時,才能說象DataTable。KT也提供了DbObject的擴充方法,通過擴充方法DataTable與List&lt;DbObject&gt;可以互相轉換。如下示例:

本文轉自Kingthy部落格園部落格,原文連結:http://www.cnblogs.com/kingthy/archive/2011/08/24/2152641.html,如需轉載請自行聯系原作者