再次解讀ConvertHelper

2022-09-13 05:51:10 字數 2310 閱讀 5765

資料庫臨時表的資料都是通過我們自己判斷轉換傳入實體中的。(如圖)

如上圖所示,所查詢出來的datatable的username欄位和***欄位的值是直接賦到實體e_user的username和***屬性裡面的。賦值的過程,是通過我們自己判讀輸入的:

user.username = reader.getstring(2)

user.*** = reader.getstring(3)

按照這樣的方式,每當我們增加查詢一些臨時表的資訊的時候,我們都要乙個乙個進行賦值,這樣做,經常會出現型別轉換錯誤等問題。

我認為converthelper類就像乙個資料加工箱子,你查詢出來datatable的資料直接扔converthelper,converthelper就會自動進行賦值轉換。(如圖)

通過這個泛型轉換方法,無論我們查詢出來神馬資料,都可以通過幾行**輕鬆實現,都不用自己再乙個個去賦值。**如下:

dim mylist as list(of entity.users)

mylist = entity.converthelper.convertolist(of entity.users)(dt)

找了好多部落格,雖然**上都有注釋,但是這個裡面的邏輯我還是一知半解,糊里糊塗的,正好今天問了九期的師哥,讓他給我講了講。

首先我們要知道setvalue方法,這個方法msdn解釋為:「設定依賴項屬性的本地值,指定由其依賴項屬性識別符號。」

什麼是依賴項本地值?

答:當您定義自己的屬性並需要它們支援 windows presentation foundation (wpf) 

功能的諸多方面(包括樣式、資料繫結、繼承、動畫和預設值)時,應將其實現為依賴項屬性。

從上面的話我們可知,我們首先是要定義自己的屬性,並且這些屬性還能支援資料繫結功能。

在我convertolist

這個方法中,

pr.setvalue(myt, value.tostring, nothing)

就是設定

myt為依賴項屬性識別符號,

value

是指新的本地值。通過這個方法就能把

datatable

裡面的字段繫結為屬性了。通過對映的方法,直接找到相對應的屬性名稱(由於資料庫和實體屬性名稱是一致的)。

現在我們要做的是對一行資料中欄位進行遍歷,**如下:

for each pr in propertys

tmpname = pr.name '將屬性的名稱賦值給臨時變數

dim value as object = dr(tmpname) '定義乙個物件型的變數來儲存列的值

if (value.tostring() <> dbnull.value.tostring()) then '在執行期間,通過反射,動態的訪問乙個物件的屬性

pr.setvalue(myt, value.tostring, nothing)

end if

這段**的思路大體是通過迴圈屬性集合中的每乙個屬性,比較屬性名稱和datarow欄位裡的名稱是否一樣,如果是一樣,就把這個屬性設定成依賴項本地值,就能把給屬性賦值。

當所有的屬性遍歷完了,並不是全部完成,因為我們這個遍歷的是一條資料裡面的所有屬性,乙個datatable

裡面是有很

datarow

的,怎麼辦?並且,我們剛剛遍歷完的這條資料怎麼辦呢?

第乙個問題比較簡單直接迴圈行就好了。

第二個問題,遍歷完的資料由於我們之前已經dim mylist as new list(of t) 

定義了乙個

mylist

的集合,集合就是乙個大熔爐,把這條資料直接扔進去就好,這條語句是:

mylist.add(myt)

。這樣集合資料裡面的東西就能根據欄位名與屬性名一致性這個條件,自動找好自己相應的屬性位置。

一般來說,我們都是按照三層傳遞資料的,假設我們資料傳遞直接是通過datatable,也就是表的形式,那麼,bll和ui層都需要知道資料庫的命名規則,也需要知道表中的字段代表了什麼,之所以加上entity層, 變成bll和ui層可以理解的語言,不要知知道db

的語法和規則,也是解耦的一種方式。如圖:

我覺得的我應該經常和別人溝通這些我不懂的問題,不要老是死憋著。

python解讀 Python再次解讀筆記

書讀百遍,其義自見。如果乙個字串包含很多需要轉義的字元,對每乙個字元都進行轉義會很麻煩。為了避免這種情況,我們可以在字串前面加個字首r,表示這是乙個 raw 字串,裡面的字元就不需要轉義了。布林運算 1.在計算a and b時,如果 a 是 false,則根據與運算法則,整個結果必定為 false,...

JAVA基礎之再次解讀String 建立幾個物件

換工作了,當換工作或者找工作的時候,往往會激發人們的學習動力 多學一點就可以多要點工資 嘿嘿 吾乃凡人乙個,雖平時都有學習的習慣,但此次投簡歷面試等還是好好的準備了一翻,學的都是基礎知識,卻又是更加深入一層的學習,深入到原始碼 原理層次。比以往的學習更加深刻且基礎。接下來一系列的文章,都會與這些基礎...

再次解讀2006 2023年國家資訊化發展戰略

再次解讀2006 2020年國家資訊化發展戰略 中國國內的經濟尤其受 支援或管制影響,各個行業因此也有沉有浮。有的行業死水微瀾,有的行業生機勃勃,有的行業正風頭高漲競爭激烈將會受到監管層的注意,有的行業自我封閉近親繁殖,有的行業國家約束國有巨頭獨享。所以,要入對行。一 推進國民資訊化 1農村網際網路...