生活随笔
收集整理的這篇文章主要介紹了
DataSet转换为实体(函数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
個人版機房時,D層所有返回值不是DataSet,就是Integer,沒有返回實體的函數。機房合作版,我寫D層,龐凡(組長)設計的每個類中幾乎都有幾個函數是返回實體的。我研究了一番,在D層每個類中都定義了一個“數據集DataSet轉換為實體”的函數DataSetToModel(參數),這樣的話,該類中每個需要返回實體的函數都可以調用這個函數,這就實現了代碼復用。
(注:之所以定義這個函數,是因為我的SqlHelper中的所有函數的返回值 只有兩種——DataSet、Integer,D層返回實體的函數,在調用SqlHelper中返回DataSet類型函數后,還需將DataSet轉換為實體)
(注:這篇博客不是重點,介紹完這個函數,咱們再來分析一下它的缺陷,以及如何解決,如何做才能達到更好的效果,才能使代碼復用性更高)
例子:(代碼只寫D層)機房收費系統為例
管理員打開“基本數據設定”窗體,窗體加載顯示最新設置的基本數據(從數據庫基本信息表T_BasicDataInfo中查詢獲得)
?
?
得到基本數據信息——ChecBasicDataInfo(參數)函數——返回值:基本數據信息的實體
?
?
將DataSet轉換為基本數據信息實體——DataSetToModel(參數)函數——返回值:基本數據信息的實體
[vb]?view plaincopy
??
[vb]?view plaincopy
?? ???? ?? ?? ?? Public?Function?DataSetToModel(ByVal?row?As?DataRow)?As?BasicDataInfoEntity?Implements?IDAL.IBasicDataInfoDAL.DataSetToModel?? ????Dim?enBasicDataInfo?As?New?Entity.BasicDataInfoEntity??? ????If?Not?IsNothing(row)?Then?? ?????????? ????????If?row.Table.Columns.Contains("FixHalfCash")?Then?? ????????????If?Not?IsNothing(row("FixHalfCash"))?Then??? ????????????????enBasicDataInfo.FixHalfCash?=?row("FixHalfCash").ToString()??? ????????????End?If?? ????????End?If?? ?????????? ????????If?row.Table.Columns.Contains("TempHalfCash")?Then?? ????????????If?Not?IsNothing(row("TempHalfCash"))?Then??? ????????????????enBasicDataInfo.TempHalfCash?=?row("TempHalfCash").ToString()??? ????????????End?If?? ????????End?If?? ?????????? ????????If?row.Table.Columns.Contains("IncreasingUnitTime")?Then?? ????????????If?Not?IsNothing(row("IncreasingUnitTime"))?Then??? ????????????????enBasicDataInfo.IncreasingUnitTime?=?row("IncreasingUnitTime").ToString()??? ????????????End?If?? ????????End?If?? ?????????? ????????If?row.Table.Columns.Contains("PrepareTime")?Then?? ????????????If?Not?IsNothing(row("PrepareTime"))?Then??? ????????????????enBasicDataInfo.PrepareTime?=?row("PrepareTime").ToString()??? ????????????End?If?? ????????End?If?? ?????????? ????????If?row.Table.Columns.Contains("LeastBalance")?Then?? ????????????If?Not?IsNothing(row("LeastBalance"))?Then??? ????????????????enBasicDataInfo.LeastBalance?=?row("leastBalance").ToString()??? ????????????End?If?? ????????End?If?? ?????????? ????????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??
?
代碼解釋:
?
B、U層調用,就可以獲得基本數據信息啦:
?
思考問題:函數返回值為實體,這意味著什么?
???????? 意味著該函數的返回記錄只能有一條,對不對?因為一個實體只能“保存”一條記錄。
??????? ?像查看某學生基本信息、某用戶基本信息——某個人的基本信息只能有一條記錄(學生實體:卡號、學號、姓名、…)吧,好,可有定義返回實體函數
?思考問題:?但是,如果“根據日期查看所有收取金額記錄”——不止一條記錄吧,給你U層返回一個實體,能實現此功能嗎?當然不能。
如何解決?
???????? 面對此問題,如何解決,你想過嗎?——你說,返回DataSet或DataTable不就得了嗎。你看,Out了吧….
???????? 偷偷告訴大家,還是返回實體,但是這次不是返回一個實體啦,是返回”一群“實體(實體集合)
?
總結
以上是生活随笔為你收集整理的DataSet转换为实体(函数)的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。