DataSet转换为实体(函数)

个人版机房时,D层所有返回值不是DataSet,就是Integer,没有返回实体的函数。机房合作版,我写D层,庞凡(组长)设计的每个类中几乎都有几个函数是返回实体的。我研究了一番,在D层每个类中都定义了一个“数据集DataSet转换为实体”的函数DataSetToModel(参数),这样的话,该类中每个需要返回实体的函数都可以调用这个函数,这就实现了代码复用。

注:之所以定义这个函数,是因为我的SqlHelper中的所有函数的返回值 只有两种——DataSet、Integer,D层返回实体的函数,在调用SqlHelper中返回DataSet类型函数后,还需将DataSet转换为实体)

注:这篇博客不是重点,介绍完这个函数,咱们再来分析一下它的缺陷,以及如何解决,如何做才能达到更好的效果,才能使代码复用性更高

例子:(代码只写D层)机房收费系统为例

管理员打开“基本数据设定”窗体,窗体加载显示最新设置的基本数据(从数据库基本信息表T_BasicDataInfo中查询获得)

 

 

得到基本数据信息——ChecBasicDataInfo(参数)函数——返回值:基本数据信息的实体

 

 

将DataSet转换为基本数据信息实体——DataSetToModel(参数)函数——返回值:基本数据信息的实体

[vb]  view plain copy
  1. ''' <summary>          
[vb]  view plain copy
  1. ''' 获得基本数据信息实体  
  2.   ''' </summary>  
  3. ''' <param name="row">数据表第一列</param>  
  4. ''' <returns>基本数据信息实体</returns>  
  5. ''' <remarks></remarks>  
  6. Public Function DataSetToModel(ByVal row As DataRow) As BasicDataInfoEntity Implements IDAL.IBasicDataInfoDAL.DataSetToModel  
  7.     Dim enBasicDataInfo As New Entity.BasicDataInfoEntity '创建基本数据信息实体  
  8.     If Not IsNothing(row) Then  
  9.         '1,如果“固定用户半小时费用”列存在  
  10.         If row.Table.Columns.Contains("FixHalfCash"Then  
  11.             If Not IsNothing(row("FixHalfCash")) Then '如果固定用户半小时费用列不为空  
  12.                 enBasicDataInfo.FixHalfCash = row("FixHalfCash").ToString() '固定用户半小时费用  
  13.             End If  
  14.         End If  
  15.         '2,如果“临时用户半小时费用”列存在  
  16.         If row.Table.Columns.Contains("TempHalfCash"Then  
  17.             If Not IsNothing(row("TempHalfCash")) Then '如果临时用户半小时费用列不为空  
  18.                 enBasicDataInfo.TempHalfCash = row("TempHalfCash").ToString() '临时用户半小时费用  
  19.             End If  
  20.         End If  
  21.         '3,如果“单位递增时间”列存在  
  22.         If row.Table.Columns.Contains("IncreasingUnitTime"Then  
  23.             If Not IsNothing(row("IncreasingUnitTime")) Then '如果单位递增时间列不为空  
  24.                 enBasicDataInfo.IncreasingUnitTime = row("IncreasingUnitTime").ToString() '单位递增时间  
  25.             End If  
  26.         End If  
  27.         '4,如果“准备时间”列存在  
  28.         If row.Table.Columns.Contains("PrepareTime"Then  
  29.             If Not IsNothing(row("PrepareTime")) Then '准备时间列不为空  
  30.                 enBasicDataInfo.PrepareTime = row("PrepareTime").ToString() '准备时间  
  31.             End If  
  32.         End If  
  33.         '5,如果“最少金额”列存在  
  34.         If row.Table.Columns.Contains("LeastBalance"Then  
  35.             If Not IsNothing(row("LeastBalance")) Then '最少金额列不为空  
  36.                 enBasicDataInfo.LeastBalance = row("leastBalance").ToString() '最少金额  
  37.             End If  
  38.         End If  
  39.         '6,如果“用户类型”列存在  
  40.         If row.Table.Columns.Contains("DivideCash"Then  
  41.             If Not IsNothing(row("DivideCash")) Then '判断用户类型列不为空  
  42.                 enBasicDataInfo.DivideCash = row("DivideCash").ToString() '判断用户类型字段  
  43.             End If  
  44.         End If  
  45.   
  46.     End If  
  47.     Return enBasicDataInfo '返回基本数据信息实体  
  48.   
  49. End Function  

 

代码解释:

 

BU层调用,就可以获得基本数据信息啦:

 

思考问题:函数返回值为实体,这意味着什么?

         意味着该函数的返回记录只能有一条,对不对?因为一个实体只能“保存”一条记录。

         像查看某学生基本信息、某用户基本信息——某个人的基本信息只能有一条记录(学生实体:卡号、学号、姓名、…)吧,好,可有定义返回实体函数

 思考问题: 但是,如果“根据日期查看所有收取金额记录”——不止一条记录吧,给你U层返回一个实体,能实现此功能吗?当然不能。

如何解决?

         面对此问题,如何解决,你想过吗?——你说,返回DataSet或DataTable不就得了吗。你看,Out了吧….

         偷偷告诉大家,还是返回实体,但是这次不是返回一个实体啦,是返回”一群“实体(实体集合)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值