資料庫臨時表的資料都是通過我們自己判斷轉換傳入實體中的。(如圖)
如上圖所示,所查詢出來的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這段**的思路大體是通過迴圈屬性集合中的每乙個屬性,比較屬性名稱和datarow欄位裡的名稱是否一樣,如果是一樣,就把這個屬性設定成依賴項本地值,就能把給屬性賦值。tmpname = pr.name '將屬性的名稱賦值給臨時變數
dim value as object = dr(tmpname) '定義乙個物件型的變數來儲存列的值
if (value.tostring() <> dbnull.value.tostring()) then '在執行期間,通過反射,動態的訪問乙個物件的屬性
pr.setvalue(myt, value.tostring, nothing)
end if
當所有的屬性遍歷完了,並不是全部完成,因為我們這個遍歷的是一條資料裡面的所有屬性,乙個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農村網際網路...