DataSet转换为实体(函数)

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

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

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

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

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

 

 

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

 

 

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

        ''' <summary>        
        ''' 获得基本数据信息实体
          ''' </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了吧….

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

 

具体是如何实现的,请关注下篇博客!!

 

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 26
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 26
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值