DataSet轉換為實體(函式)

2021-06-17 23:38:36 字數 3339 閱讀 5090

個人版機房時,d層所有返回值不是dataset,就是integer,沒有返回實體的函式。機房合作版,我寫d層,龐凡(組長)設計的每個類中幾乎都有幾個函式是返回實體的。我研究了一番,在d層每個類中都定義了乙個「資料集dataset轉換為實體」的函式datasettomodel(引數),這樣的話,該類中每個需要返回實體的函式都可以呼叫這個函式,這就實現了**復用。

注:之所以定義這個函式,是因為我的sqlhelper中的所有函式的返回值 只有兩種——dataset、integer,d層返回實體的函式,在呼叫sqlhelper中返回dataset型別函式後,還需將dataset轉換為實體)

注:這篇部落格不是重點,介紹完這個函式,咱們再來分析一下它的缺陷,以及如何解決,如何做才能達到更好的效果,才能使**復用性更高)

例子:(**只寫d層)機房收費系統為例

管理員開啟「基本資料設定」窗體,窗體載入顯示最新設定的基本資料(從資料庫基本資訊表t_basicdatainfo中查詢獲得)

得到基本資料資訊——checbasicdatainfo(引數)函式——返回值:基本資料資訊的實體

將dataset轉換為基本資料資訊實體——datasettomodel(引數)函式——返回值:基本資料資訊的實體

'''
''' 獲得基本資料資訊實體

'''

''' 資料表第一列

''' 基本資料資訊實體

'''

public function datasettomodel(byval row as datarow) as basicdatainfoentity implements idal.ibasicdatainfodal.datasettomodel

dim enbasicdatainfo as new entity.basicdatainfoentity '建立基本資料資訊實體

if not isnothing(row) then

'1,如果「固定使用者半小時費用」列存在

if row.table.columns.contains("fixhalfcash") then

if not isnothing(row("fixhalfcash")) then '如果固定使用者半小時費用列不為空

enbasicdatainfo.fixhalfcash = row("fixhalfcash").tostring() '固定使用者半小時費用

end if

end if

'2,如果「臨時使用者半小時費用」列存在

if row.table.columns.contains("temphalfcash") then

if not isnothing(row("temphalfcash")) then '如果臨時使用者半小時費用列不為空

enbasicdatainfo.temphalfcash = row("temphalfcash").tostring() '臨時使用者半小時費用

end if

end if

'3,如果「單位遞增時間」列存在

if row.table.columns.contains("increasingunittime") then

if not isnothing(row("increasingunittime")) then '如果單位遞增時間列不為空

enbasicdatainfo.increasingunittime = row("increasingunittime").tostring() '單位遞增時間

end if

end if

'4,如果「準備時間」列存在

if row.table.columns.contains("preparetime") then

if not isnothing(row("preparetime")) then '準備時間列不為空

enbasicdatainfo.preparetime = row("preparetime").tostring() '準備時間

end if

end if

'5,如果「最少金額」列存在

if row.table.columns.contains("leastbalance") then

if not isnothing(row("leastbalance")) then '最少金額列不為空

enbasicdatainfo.leastbalance = row("leastbalance").tostring() '最少金額

end if

end if

'6,如果「使用者型別」列存在

if row.table.columns.contains("dividecash") then

if not isnothing(row("dividecash")) then '判斷使用者型別列不為空

enbasicdatainfo.dividecash = row("dividecash").tostring() '判斷使用者型別字段

end if

end if

end if

return enbasicdatainfo '返回基本資料資訊實體

end function

**解釋:

u層呼叫,就可以獲得基本資料資訊啦:

思考問題:函式返回值為實體,這意味著什麼?

意味著該函式的返回記錄只能有一條,對不對?因為乙個實體只能「儲存」一條記錄。

像檢視某學生基本資訊、某使用者基本資訊——某個人的基本資訊只能有一條記錄(學生實體:卡號、學號、姓名、…)吧,好,可有定義返回實體函式

思考問題:但是,如果「根據日期檢視所有收取金額記錄」——不止一條記錄吧,給你u層返回乙個實體,能實現此功能嗎?當然不能。

如何解決?

面對此問題,如何解決,你想過嗎?——你說,返回dataset或datatable不就得了嗎。你看,out了吧….

偷偷告訴大家,還是返回實體,但是這次不是返回乙個實體啦,是返回」一群「實體(實體集合)

DataSet轉換為Byte 方法

using system using system.collections.generic using system.io.compression using system.text using system.data using system.io using system.runtime.ser...

dataset和實體類 之間的轉換

dataset轉實體類 public static ilistfillmodel dataset ds foreach datarow dr in ds.tables 0 rows l.add model return l 將實體類轉換成datatable public static datatab...

dataset與實體類

dataset與sqldataadapter物件是微軟在ado.net中推出的新一代的資料訪問方式,有些情況下非常適合使用 dataset,例如在設計原型 開發小型系統和支援實用程式時。但是,在企業系統中使用 dataset 可能並不是最佳的解決方案,因為對企業系統來說,易於維護要比投入市場的時間更...