ADO.NET实现应用程序数据访问层

发表于:2011-7-05 10:00

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:小军人    来源:51Testing软件测试网采编

Imports System.Xml.Serialization

<Serializable()> _
Public Class Book : Implements IComparable

<XmlAttributeAttribute()> Public ProductID As Integer
Public ISBN As String
Public Title As String
Public Author As String
Public UnitCost As Decimal
Public Description As String
Public PubDate As Date

Public Function CompareTo(ByVal o As Object) As Integer _
Implements IComparable.CompareTo

 Dim b As Book = CType(o, Book)
 Return Me.Title.CompareTo(b.Title)
End Function

End Class

Public NotInheritable Class BookCollection : Inherits ArrayList

Default Public Shadows Property Item(ByVal productId As Integer)
As Book

Get
 Return Me(IndexOf(productId))
End Get
Set(ByVal Value As Book)
 Me(IndexOf(productId)) = Value
End Set
End Property

Public Overloads Function Contains(ByVal productId As Integer) As Boolean
 Return (-1 <> IndexOf(productId))
End Function

Public Overloads Function IndexOf(ByVal productId As Integer) As Integer
 Dim index As Integer = 0
 Dim item As Book

 For Each item In Me
  If item.ProductID = productId Then
   Return index
  End If
  index = index + 1
 Next
 Return -1
End Function

Public Overloads Sub RemoveAt(ByVal productId As Integer)
 RemoveAt(IndexOf(productId))
End Sub

Public Shadows Function Add(ByVal value As Book) As Integer
 Return MyBase.Add(value)
End Function

End Class

  图6 使用一个自定义类

  图6包含了一个简单的Book类及其关联的集合类的示例。您会发现,Book类用Serializable进行了标记,以便跨应用程序域启用“按值(by value)”语义。该类实现了IComparable接口,以便当它包含在集合类中的时候,它将在默认情况下按Title排序。BookCollection类派生自System.Collections命名空间中的ArrayList,并且遮蔽了Item属性和Add方法,以便将集合限制为仅包含Book对象。通过使用自定义类,您可以获得对数据表示方法的完全控制,通过强类型化和IntelliSense提高开发人员的工作效率,并且消除对ADO.NET的调用方依赖性。但是,由于.NET Framework不包含任何与对象相关的映射技术(除了本质上是派生的DataSet类的类型化DataSet对象以外),因此该方法需要更多的代码。在这些情况下,您通常要在数据访问类中创建一个数据读取器,并且使用它来填充自定义类。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号