日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DataSet转换为实体(函数)

發布時間:2025/6/15 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataSet转换为实体(函数) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

個人版機房時,D層所有返回值不是DataSet,就是Integer,沒有返回實體的函數。機房合作版,我寫D層,龐凡(組長)設計的每個類中幾乎都有幾個函數是返回實體的。我研究了一番,在D層每個類中都定義了一個“數據集DataSet轉換為實體”的函數DataSetToModel(參數),這樣的話,該類中每個需要返回實體的函數都可以調用這個函數,這就實現了代碼復用。

注:之所以定義這個函數,是因為我的SqlHelper中的所有函數的返回值 只有兩種——DataSet、Integer,D層返回實體的函數,在調用SqlHelper中返回DataSet類型函數后,還需將DataSet轉換為實體)

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

例子:(代碼只寫D層)機房收費系統為例

管理員打開“基本數據設定”窗體,窗體加載顯示最新設置的基本數據(從數據庫基本信息表T_BasicDataInfo中查詢獲得)

?

?

得到基本數據信息——ChecBasicDataInfo(參數)函數——返回值:基本數據信息的實體

?

?

將DataSet轉換為基本數據信息實體——DataSetToModel(參數)函數——返回值:基本數據信息的實體

[vb]?view plaincopy
  • '''?<summary>??????????
  • [vb]?view plaincopy
  • '''?獲得基本數據信息實體??
  • ??'''?</summary>??
  • '''?<param?name="row">數據表第一列</param>??
  • '''?<returns>基本數據信息實體</returns>??
  • '''?<remarks></remarks>??
  • 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??
  • ?

    代碼解釋:

    ?

    BU層調用,就可以獲得基本數據信息啦:

    ?

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

    ???????? 意味著該函數的返回記錄只能有一條,對不對?因為一個實體只能“保存”一條記錄。

    ??????? ?像查看某學生基本信息、某用戶基本信息——某個人的基本信息只能有一條記錄(學生實體:卡號、學號、姓名、…)吧,好,可有定義返回實體函數

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

    如何解決?

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

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

    ?

    總結

    以上是生活随笔為你收集整理的DataSet转换为实体(函数)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。