昨天用了多半天的时间在实现从数据访问层的DataReader返回实体类集合的功能,如果要是简单的实现不难,但是想通过融入设计模式,然后再用上自己写的SQLHelp,但是用了很长时间还是没有实现。
总结一下原因:
1、将一个循环拆开到两个函数中这种做法本身就有问题。
2、对策略模式+单例模式+接口泛化的理解不够透彻,因此程序写起来思路不是很清晰,一些vb.net的具体用法比较模糊,比如对于ilist(of T) 和list (of T)的区别并没有及时的意识到之间的差别。
最后把简单的实现代码贴出来,给网略资源做点贡献,方法不好,仅供参考。
''' <summary>
''' 获取登录教师历史记录,返回教师实体类集合
''' </summary>
''' <returns>教室工作记录实体类</returns>
''' <remarks></remarks>
Public Function SelectAllWorkLog() As System.Collections.Generic.List(Of Model.Worklog) Implements IDAL.IWorkLogDAL.SelectAllWorkLog
Dim spName As String
spName = "proc_SelectAllWorklog_User"
Dim con As New SqlConnection(sqlHelp.connStr)
Dim cmd As New SqlCommand(spName, con)
Dim drWorkLog As SqlDataReader
Dim entityList As New List(Of Model.Worklog)
Dim WorkLog As New Model.Worklog
Try
con.Open()
drWorkLog = cmd.ExecuteReader()
While drWorkLog.Read
'返回一个教室登录记录的实体类,在程序的DAL层中返回实体类比返回DataSet、DataTable、DataReader要有一些优越性
WorkLog = WorkLogToEntity.DataReaderToEntity(drWorkLog)
'将实体类元素放入集合
entityList.Add(WorkLog)
End While
Return entityList
Catch ex As Exception
MsgBox(ex.Message)
Return Nothing
Finally
con.Close()
cmd.Dispose()
cmd = Nothing
End Try
End Function