DataSet转换为实体(函数)
来源:互联网 发布:游族网络大将军 编辑:程序博客网 时间:2024/04/28 07:38
个人版机房时,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
代码解释:
B、U层调用,就可以获得基本数据信息啦:
思考问题:函数返回值为实体,这意味着什么?
意味着该函数的返回记录只能有一条,对不对?因为一个实体只能“保存”一条记录。
像查看某学生基本信息、某用户基本信息——某个人的基本信息只能有一条记录(学生实体:卡号、学号、姓名、…)吧,好,可有定义返回实体函数
思考问题: 但是,如果“根据日期查看所有收取金额记录”——不止一条记录吧,给你U层返回一个实体,能实现此功能吗?当然不能。
如何解决?
面对此问题,如何解决,你想过吗?——你说,返回DataSet或DataTable不就得了吗。你看,Out了吧….
偷偷告诉大家,还是返回实体,但是这次不是返回一个实体啦,是返回”一群“实体(实体集合)
具体是如何实现的,请关注下篇博客!!
- DataSet转换为实体(函数)
- DataSet转换为实体(函数)
- 实体类 动态转换 DataSet
- xml转换为dataset
- DataSet 转换为Json
- dataset和实体类 之间的转换
- dataset与实体类的转换
- 将List实体转换成DataSet
- 把 HTML 实体转换为字符:html_entity_decode() 函数
- DataSet、DataTable转换为Json
- DataTable数据转换为实体
- DataTable数据转换为实体
- C# 实体转换为DataTable
- 将实体转换为map
- DataSet与实体类(转)
- DataSet与实体类(转)
- 把Excel文件内容转换为dataset
- xml格式的string转换为dataset
- hdu4500 小Q系列故事——屌丝的逆袭
- C#代码与javaScript函数的相互调用
- C语言 时间API
- Assassin’s Creed(hdu4415,贪心)
- C语言中关于时间的操作
- DataSet转换为实体(函数)
- 约瑟夫问题
- Win7系统环境安装配置PHP开发环境
- c++11之auto自动类型推断和decltype类型获取
- MVC和MVP的区别
- hibernate的多条件动态查询(非常实用)
- (一)Win8+XAML+C# 类之间传值
- 半数集问题
- Valid Palindrome